Ошибка в подпрограмме Excel для импорта текстового файла с фиксированной шириной, не содержащего символов ASCII - PullRequest
0 голосов
/ 21 марта 2019

У меня есть подпрограмма для импорта текстового файла с фиксированной шириной в Excel, и это прекрасно работает, если файл содержит только символы ASCII, но не работает, когда файл имеет символы не ASCII. Файл имеет кодировку UTF-8. Когда есть символы не ASCII, они импортируются, как если бы они были несколькими символами, поэтому данные в столбцах справа импортируются неправильно. Как правильно импортировать файл фиксированной ширины, если он может содержать символы не ascii? Первоначально у меня были все поля как xlGeneralFormat, я попытался изменить поля, которые могут содержать символы не ascii, на xlTextFormat, но это никак не повлияло на проблему.

Sub ImportFixedWidth()
    Application.Workbooks.OpenText _
        Filename:="C:\Temp\Ok File.txt", _
        StartRow:=1, _
        DataType:=xlFixedWidth, _
        FieldInfo:=Array( _
        Array(0, xlTextFormat), _
        Array(5, xlTextFormat), _
        Array(10, xlGeneralFormat), _
        Array(17, xlGeneralFormat))
End Sub

Если я изменю файл, значит саб:

Sub ImportFixedWidth()
    Application.Workbooks.OpenText _
        Filename:="C:\Temp\Issue File.txt", _
        StartRow:=1, _
        DataType:=xlFixedWidth, _
        FieldInfo:=Array( _
        Array(0, xlTextFormat), _
        Array(5, xlTextFormat), _
        Array(10, xlGeneralFormat), _
        Array(17, xlGeneralFormat))
End Sub

Ok File.txt:

Text1Text2Number1Number2
applepear 1      2
Foo  Bar  3      4
Jane John 4      6

enter image description here

Issue File.txt

Text1Text2Number1Number2
applÉpÉar 1      2
Foo  Bar  3      4
Jane John 4      6

enter image description here

Ожидаемый Excel:

enter image description here

...