Board logo

標題: [發問] 網頁資料匯入Excel中文顯示異常 [打印本頁]

作者: jcchiang    時間: 2013-2-7 11:02     標題: 網頁資料匯入Excel中文顯示異常

使用下列程式抓取網頁資料(網址為公司資料無法提供),有的網頁中文可正確顯示,但有的網頁中文為亂碼(應該為其他文字碼)
檢查網頁編碼,中文顯示正常的為"繁體中文(BIG5),異常的為"Unicode(UFT-8)",請問與這個有關嗎??
如果是這原因造成的,請問程式要如何修正,謝謝

[attach]14146[/attach]

使用VB抓取網頁資料,每次開啟Excel後都會詢問"查詢更新"
是否有設定可以修正
[attach]14147[/attach]

Sub 新增查詢()
    Range("A3:AA65526").Clear
    Range("A3").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;網址", Destination:=Selection)
             .Name = "Alarm"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "2"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False        
    End With
End Sub
作者: luhpro    時間: 2013-2-19 00:07

使用下列程式抓取網頁資料(網址為公司資料無法提供),有的網頁中文可正確顯示,但有的網頁中文為亂碼(應該為其 ...
jcchiang 發表於 2013-2-7 11:02


你的意思是說有多個網頁要讀取,
有的網頁編碼是BIG5碼,
有的是 UTF-8,
而只要編碼是 UTF-8 的網頁讀過來的資料都會是亂碼嗎?

若是如此那你可能要用人工重新打字以覆蓋亂碼字,
因為於不同編碼下所顯示出來的文字必然不同.

或者是你找看看是否有轉碼功能的軟體,
提供類似翻譯軟體的功能,
把 UTF-8 編碼的文字貼到一個文字框內,
另一個文字框產生相同文字但是用 BIG5 來編碼出來的,
我不知道有沒有這種軟體.

若不是上面所說而純只是想調整 Excel 讀取網頁文字時的編碼,
我找了一下,
或許你可參考 DefaultWebOptions 物件 或 WebOptions 物件的 Encoding 屬性.
作者: jcchiang    時間: 2013-2-19 12:44

回復 2# luhpro

我是要抓取一個網頁資料,發現抓出來的資料中文都是亂碼
用相同的程式測試抓取其他網頁資料並無此現象
才會詢問是否與網頁編碼有相關嗎
有找到一篇文章是先將網頁資料轉為.HTM檔,再將資料轉入Excel,則可正常顯示
只是會多產生一個.HTM檔
Sub Ex5()
    Dim Fs As Object, Url As String, OkFile As String, MyQuery As QueryTable
    Url = "'網址"
    OkFile = "C:\OK.HTM"                              '下載後存檔名稱
    Range("A3:AA65526").Clear
    Range("A3").Select
    With CreateObject("Microsoft.XMLHTTP")
        .Open "get", Url, False
        .send
        Set Fs = CreateObject("Scripting.FileSystemObject").CreateTextFile(OkFile, True)
                                     '建立一文字檔(True:檔案如存在 可覆蓋舊檔案)
        Fs.WriteLine .responseText   '寫入文字檔
        Fs.Close
        With ThisWorkbook.Sheets(1)  '工作表中匯入HTM檔
            Set MyQuery = .QueryTables.Add("FINDER;file:///" & OkFile, .[A3])
            MyQuery.WebTables = "2"
            MyQuery.WebFormatting = xlWebFormattingNone
            MyQuery.Refresh 0
        End With
  End With
End Sub
   
大大所提的方法我會再去研究研究
謝謝你的指導




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)