2015-09-05 41 views
1

我有代碼,許多進口的文本文件,含有異物/特殊字符,到Excel工作簿:導入文本與外文字符

Sub loadfiles() 

    Dim fpath As String 
    Dim fname As String 
    Application.ScreenUpdating = False 

    fpath = "...\data\" 
    fname = Dir(fpath & "*.txt") 
    For i = 1 To 10 
    Application.StatusBar = True 
    Application.StatusBar = "Progress: " & i & " of 10000" 
     Sheet1.Select 
     Range("A" & i).Value = fname 
     With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _ 
      & fpath & fname, Destination:=Range("B" & i)) 
      .Name = "a" 
      .FieldNames = True 
      .RowNumbers = False 
      .FillAdjacentFormulas = False 
      .PreserveFormatting = False 
      .RefreshOnFileOpen = False 
      .RefreshStyle = xlInsertDeleteCells 
      .SaveData = True 
      .AdjustColumnWidth = False 
      .RefreshPeriod = 0 
      .TextFilePromptOnRefresh = False 
      .TextFilePlatform = 437 
      .TextFileStartRow = 1 
      .TextFileParseType = xlDelimited 
      .TextFileTextQualifier = xlTextQualifierDoubleQuote 
      .TextFileConsecutiveDelimiter = False 
      .TextFileTabDelimiter = False 
      .TextFileColumnDataTypes = _ 
      Array(xlTextFormat, xlSkipColumn, xlGeneralFormat) 
      .Refresh BackgroundQuery:=False 
      fname = Dir 
     End With 
    Next i 
    Application.StatusBar = False 
    Application.ScreenUpdating = True 
    MsgBox "Done" 
End Sub 

有什麼辦法來導入文本不失原始字符?

回答

0

相反VBA的快速方法可能如下。

1.Save導入的文件爲CSV

2.Open Excel中

3.進口使用數據的數據 - >導入外部數據 - >導入數據

4.Select 「CSV」的文件類型,並瀏覽到您的文件

5.In導入嚮導改變File_Origin選擇「日語Shift-JIS編碼」(或選擇正確的語言字符的標識符)

6.將分隔符更改爲逗號

7.選擇要導入到的位置和完成。

這樣的特殊字符,應正確顯示。

我知道添加\ uFEFF在任何CSV文件(用Java生成)的開始,Excel可以正確打開它們。 的UTF-8字節順序標記將線索的Excel 2007+在這樣的事實,您使用UTF-8 UTF-8是可變寬度編碼。它只需要1個字節來編碼ASCII字符,但其他代碼點將使用多個字節。

格式正確的UTF8文件可以將字節順序標記作爲其前三個八位字節。這些是十六進制值0xEF,0xBB,0xBF。這些八位字節用於將文件標記爲UTF8(因爲它們與「字節順序」信息無關).1如果>此BOM不存在,消費者/閱讀器將推斷文本的編碼類型>。不支持UTF8的讀取器將讀取字節作爲其他編碼,例如Windows-1252,並在文件的開頭顯示字符。

有一個已知的錯誤,其中Excel通過文件>關聯打開UTF8 csv文件後,假定它們是單字節編碼,而不考慮UTF8 BOM的存在。這不能通過任何系統默認代碼頁>或語言設置來解決。 BOM不會在Excel中提供線索 - 它不會工作。 (A>少數報告聲稱BOM有時會觸發「導入文本」>嚮導)。此錯誤似乎存在於Excel 2003及更早版本中。大多數報告注意>您可以使用「導入>文本」嚮導在Excel中始終*正確打開UTF8 cdv文件,該向導允許您指定要打開的文件的編碼。當然這很不方便。

這個答案的讀者很有可能在他們不是特別支持2007年Excel,但發送原始UTF8文本到Excel的情況下>這是錯誤地解釋它,並且將文本與Ã和其他類似的> Windows-1252字符。添加UTF8物料清單可能是您的最佳和最快速的修復(在這裏的答案中),說這是在Excel 2007及更新版本中修復的。

Microsoft Excel mangles Diacritics in .csv files?

1

嘗試增加

.QueryType = xlTextImport

和改變

.TextFilePlatform = xlMSDOS

.PreserveFormatting = True

+0

謝謝。 .QueyType沒有工作,但改變後.TextFilePlatform它的工作。 – user2702405

+0

我很高興它有幫助。請記住,「TextFilePlatform」依賴於** QueryType **(來自幫助):_僅當您的查詢表基於來自文本文件的數據時(使用QueryType屬性設置爲xlTextImport),才使用TextFilePlatform ._ –