导入带有外来字符的文本

时间:2015-09-05 19:19:30

标签: vba excel-vba excel

我有一些代码可以将包含外来/特殊字符的许多文本文档导入到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

有没有办法导入文字而不会丢失原始字符?

2 个答案:

答案 0 :(得分:0)

而不是VBA,快速方法可以如下。

1.将导入的文件保存为csv

2.打开Excel

3.使用数据导入数据 - >导入外部数据 - >导入数据

4.选择“csv”的文件类型并浏览到您的文件

5.在导入向导中,将File_Origin更改为选择“日语shift-jis编码”(或选择正确的语言字符标识符)

6.将分隔符更改为逗号

7.选择导入的位置并完成。

这样特殊字符应该正确显示。

我理解在任何CSV文件(用Java生成)的开头添加\ uFEFF,Excel都能正确打开它们。 UTF-8字节顺序标记将提示Excel 2007+使用UTF-8 UTF-8是可变宽度编码。它只需要1个字节来编码ASCII字符,但其他代码点将使用多个字节。

  

格式正确的UTF8文件可以将字节顺序标记作为其前三个>八位字节。这些是十六进制值0xEF,0xBB,0xBF。这些八位字节用于将文件标记为UTF8(因为它们与“字节顺序”信息无关).1如果>此BOM不存在,则消费者/读者可以推断出编码类型>文本。不具备UTF8功能的读卡器会将字节读取为某些>其他编码(如Windows-1252),并在文件的开头>处显示字符.

     

有一个已知的错误,在通过文件>关联打开UTF8 csv文件时,Excel假定它们采用单字节编码,而忽略了UTF8 BOM的存在。任何系统默认代码页>或语言设置都无法解决此问题。 BOM不会在Excel中发现 - 它只是不起作用。 (A>少数报告声称BOM有时会触发“导入文本”>向导。)此错误似乎存在于Excel 2003及更早版本中。大多数报告注意>您始终可以使用“导入>文本”向导在Excel中正确打开UTF8 cdv文件,该向导允许您指定要打开的文件的编码。当然这不太方便。

     

这个答案的读者很可能是在他们没有特别支持Excel< 2007年,但是将原始的UTF8文本发送到Excel,>这会误解它并用Ã和其他类似的> Windows-1252字符播放文本。添加UTF8 BOM可能是您最好和最快的>修复。(在这里的答案中)说这是在Excel 2007及更新版本中修复的。

Microsoft Excel mangles Diacritics in .csv files?

答案 1 :(得分:0)

尝试添加

@RequestParam

并改变

.QueryType = xlTextImport

.TextFilePlatform = xlMSDOS