Lire Fichier HTML Local en Chaîne Avec VBA
Cela se sent comme il doit être simple. J'ai un .HTML fichier stocké sur mon ordinateur, et j'aimerais lire l'intégralité du fichier en une chaîne de caractères. Quand j'ai essayer la super simple
Dim FileAsString as string
Open "C:\Myfile.HTML" for input as #1
Input #1, FileAsString
Close #1
debug.print FileAsString
Je n'ai pas le fichier en entier. Je ne reçois que les premières lignes (je sais immédiate de la fenêtre de coupe, mais ce n'est pas la question. Je ne suis certainement pas l'obtention de l'intégralité du fichier en ma chaîne). J'ai aussi essayé d'utiliser une méthode alternative à l'aide de l'objet système de fichiers, et obtenu des résultats similaires, mais cette fois avec beaucoup de caractères bizarres et des points d'interrogation jeté dans. Cela me fait penser que c'est probablement une sorte de problème de codage. (Bien que franchement, je ne comprends pas tout ce que cela signifie. Je sais qu'il existe différents formats d'encodage et que cela peut provoquer des problèmes avec le traitement de chaîne, mais c'est tout.)
Donc, plus généralement, voici ce que j'aimerais vraiment savoir: Comment puis-je utiliser vba pour ouvrir un fichier de n'importe quelle extension (qui peut être affiché dans un éditeur de texte) et la longueur (qui ne dépasse pas VBA de la chaîne de la limite), et assurez-vous que quel que soit les personnages, je voudrais voir dans un éditeur de texte de base sont ce qui est lu dans une chaîne de caractères? (Si ça peut pas être (facilement) fait, je serais certainement apprécier d'être orientés vers une méthode qui est susceptible de travailler avec .les fichiers html) Merci beaucoup pour votre aide
EDIT:
Voici un exemple de ce qui se passe lorsque j'utilise la méthode suggérée. Plus précisément
Dim oFSO As Object
Dim oFS As Object, sText As String
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFS = oFSO.OpenTextFile(Path)
Do Until oFS.AtEndOfStream
sText = oFS.ReadAll()
Loop
FileToString = sText
Set oFSO = Nothing
Set oFS = Nothing
End Function
Je vais vous montrer à la fois le début (par l'intermédiaire d'une boîte de message) et la fin (par la fenêtre) parce que les deux sont bizarre de différentes manières. Dans les deux cas, je vais le comparer à une capture d'écran de la source html affiché dans google chrome:
Début:
Fin:
- Pouvez-vous fournir un exemple de l'encodage du texte?
- Une recherche rapide sur ici a montré d'autres questions similaires. Peut-être que cela pourrait aider: stackoverflow.com/questions/1376756/...
- Les points d'interrogation sont généralement indicatif de double-byte unicode des caractères qui ne sont pas représentés dans toutes les polices ou les systèmes d'exploitation... vous pouvez essayer d'utiliser un
ADODB
flux de lire le contenu, mais je soupçonne qu'il ya un problème avec votre document HTML. - J'ai ajouté les captures d'écran du fichier d'origine, ainsi que les résultats que j'obtiens lors de la tentative de lecture dans une chaîne à l'aide de la upvoted méthode ci-dessous. (J'apprécie vraiment votre aide)
- Comment êtes vous économisez de l'html? Si j'enregistre une page de ce site manuellement et utiliser mon code ci-dessous tout fonctionne comme prévu avec pas de double interligne. Il pourrait être votre méthode de récupérer les données plutôt que de les importer html/fichiers texte qui est la question.
- le contenu de ce fichier est la .responseText d'un objet XMLHTTP. Pourrait être le problème est quelque peu arbitraire ".html" que j'ai ajouté à la fin o le nom de fichier?
- en passant, j'ai essayé simplement de changer l'extension, (lorsque le fichier est créé) et il n'a pas de résoudre le problème.
Vous devez vous connecter pour publier un commentaire.
C'est une méthode
EDIT:
Essayez de changer la ligne suivante à l'une de ces 3 lignes et voir si cela fait une différence
http://msdn.microsoft.com/en-us/library/aa265347(v=vs. 60).aspx
EDIT2:
Fait ce code pour vous?
Bon alors j'ai enfin réussi à comprendre cela. Le VBA objet de système de fichiers ne peut que lire asciiII fichiers, et je lui avais sauvé la mienne comme de l'unicode. Parfois, comme dans mon cas, l'enregistrement d'un asciiII fichier peut provoquer des erreurs. Vous pouvez contourner ce problème, cependant, par la conversion du fichier binaire, et ensuite revenir à une chaîne. Les détails sont expliqués ici http://bytes.com/topic/asp-classic/answers/521362-write-xmlhttp-result-text-file.