从Web(html)源将Unicode文本导入excel工作表
我使用下面提到的代码从网站获取HTML源代码。我在获取英语数据方面没有问题。但是,如果它们是其他语言,我无法导入该文本而不将该文本转换为胡言乱语 如何允许下面的代码以实际形式导入其他语言文本从Web(html)源将Unicode文本导入excel工作表,excel,vba,Excel,Vba,我使用下面提到的代码从网站获取HTML源代码。我在获取英语数据方面没有问题。但是,如果它们是其他语言,我无法导入该文本而不将该文本转换为胡言乱语 如何允许下面的代码以实际形式导入其他语言文本 Sub test() Dim FILENAME As String Dim FileNum As Long FILENAME = "C:\Temp\Source.txt" FileNum = FreeFile Open FILENAME For Output As FileNum Print #Fil
Sub test()
Dim FILENAME As String
Dim FileNum As Long
FILENAME = "C:\Temp\Source.txt"
FileNum = FreeFile
Open FILENAME For Output As FileNum
Print #FileNum, GetSource("https://www.pleasehelp.com/thankyou.html")
Close FileNum
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\TEMP\Source.txt", Destination:=Range("A1"))
.Name = "Source"
.AdjustColumnWidth = True
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileColumnDataTypes = Array(2)
.Refresh BackgroundQuery:=False
End With
End Sub
Function GetSource(sURL As String) As String
Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "GET", sURL, False
oXHTTP.send
GetSource = oXHTTP.responsetext
Set oXHTTP = Nothing
End Function
尝试使用Stream对象而不是Open语句来输出到文件。流对象允许将字符集设置为unicode以翻译内容。下面的示例专门使用UTF-8编码 请注意,代码使用早期绑定,因此您需要将引用(
Visual Basic Editor>>工具>>引用
)设置为Microsoft ActiveX数据对象x.x.库
)
Option Explicit
Sub test()
Dim outFile As String
outFile = "C:\Temp\Source.txt"
Dim stream As ADODB.stream
Set stream = New ADODB.stream
With stream
.Charset = "UTF-8"
.Mode = adModeReadWrite
.Type = adTypeText
.Open
.WriteText GetSource("https://www.pleasehelp.com/thankyou.html")
.SaveToFile outFile, adSaveCreateOverWrite 'overwrites any already existing file
.Close
End With
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & outFile, Destination:=Range("A1"))
.Name = "Source"
.AdjustColumnWidth = True
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileColumnDataTypes = Array(2)
.Refresh BackgroundQuery:=False
End With
End Sub
谢谢你的帮助。。我试过你的代码,但因为我不太了解VBA。我仍然犯错误。可能是我选错了ActiveX库。我刚刚在查询表下添加了.TextFilePlatform=65001,并将函数中的“GetSource=oXHTTP.responsetext”替换为GetSource=StrConv(oXHTTP.responseBody,vbUnicode),它成功了。。