Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Web(html)源将Unicode文本导入excel工作表_Excel_Vba - Fatal编程技术网

从Web(html)源将Unicode文本导入excel工作表

从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

我使用下面提到的代码从网站获取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 #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),它成功了。。