【发布时间】:2020-01-29 05:30:08
【问题描述】:
这感觉应该很简单。我的计算机上存储了一个 .HTML 文件,我想将整个文件读入一个字符串。当我尝试超级简单的时候
Dim FileAsString as string
Open "C:\Myfile.HTML" for input as #1
Input #1, FileAsString
Close #1
debug.print FileAsString
我没有得到整个文件。我只得到前几行(我知道立即窗口被切断,但这不是问题。我绝对不会将整个文件放入我的字符串中。)我还尝试使用文件系统对象的替代方法,并且得到了类似的结果,只是这次有很多奇怪的字符和问号。这让我觉得这可能是某种编码问题。 (虽然坦率地说,我并不完全理解这意味着什么。我知道有不同的编码格式,这可能会导致字符串解析出现问题,但仅此而已。)
所以更一般地说,这是我真正想知道的:如何使用 vba 打开任何扩展名(可以在文本编辑器中查看)和长度(不超过 VBA 的字符串限制)的文件),并确保我在基本文本编辑器中看到的任何字符都是读入字符串的? (如果这不能(轻松)完成,我当然希望有人指出一种可能适用于 .html 文件的方法)非常感谢您的帮助
编辑: 这是我使用建议的方法时发生的情况的示例。具体
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
我将向您展示开头(通过消息框)和结尾(通过即时窗口),因为两者在不同的方面都很奇怪。在这两种情况下,我都会将其与 chrome 中显示的 html 源的屏幕截图进行比较:
开始:
结束:
【问题讨论】:
-
你能提供一个编码文本的例子吗?
-
在这里快速搜索显示了其他类似的问题。也许这个可能会有所帮助:stackoverflow.com/questions/1376756/…
-
问号通常表示并非在所有字体或操作系统中都表示的双字节 unicode 字符...您可以尝试使用
ADODB流来读取内容,但我怀疑您的 HTML 文档有问题。 -
@osknows 我添加了原始文件的屏幕截图,以及尝试使用下面的upvoted 方法将其读入字符串时得到的结果。 (非常感谢您的所有帮助)
-
@osknows 文件的内容是 XMLHTTP 对象的 .responseText。问题可能是我在文件名末尾添加的有点随意的“.html”吗?