Вводная точка с запятой разграничила файл CSV

Как каждый открывается, точка с запятой разграничила файл CSV с VBA в Excel 2000?

Демонстрационные данные

An ID;TEST20090222
A Name;Firstname Surname
A Date;11.05.2000

Country:;SomeCountryName
Currency;EUR
CostA;
CostB;
CostC;
Part1;10;20;30
Part2;;;;
Part3;34;56;87

Код

В Excel 2003 11.8231.8221 SP3 с VBA 05.06.1025, я могу открыться, точка с запятой разграничила файл со следующим кодом VBA:

Workbooks.OpenText filename:=myFilename, _
    DataType:=xlDelimited, Semicolon:=True, Local:=True

Однако, когда тот же код выполняется в excel 2000 9.0.8961 SP1 с VBA 05.06.1025, я получаю следующую ошибку:

Ошибка компиляции: Параметр, передаваемый по имени, не найденный

Это - я думаю - потому что Excel 2000 не знает "Локального" параметра, передаваемого по имени.

Поэтому я удалил часть "Local:=True". Но проблема затем состоит в том, что вся строка из файла CSV записана в одну ячейку вместо того, чтобы быть разделенной на разграниченные части отдельной точки с запятой.

Я искал Интернет решение, но ничто не нашел полезным и кратким.

Какие-либо идеи?

[Обновите 17.02.2009]

Я попробовал предложение от пользователя lc с макро-устройством записи. Однако результаты сбивали с толку.

Когда я открываю файл CSV с файлом меню-> Открытый... и затем выбираю файл CSV, точка с запятой отделилась, данные правильно анализируются. И зарегистрированный код так же прост как:

Workbooks.Open filename:= _
               "D:\testdata\Example 01 CSV\input.csv"

Но когда я использую это код VBA в моем макросе, каждый концы строки в одной ячейке снова.

Согласно предложению от пользователя barrowc, я также изменил настройки Windows "Regional and Language Options" с "немецкого языка (Швейцария)" "английскому языку (Соединенные Штаты)". Даже после перезапуска Excel, ничто не изменилось, та же проблема.

Интересно, почему это работает над системой пользователя Remou. Что региональный и настройки языка Вы имеете?

5
задан Tanveer Badar 27 November 2019 в 13:07
поделиться

4 ответа

[Обновите 22.02.2009]

Тем временем я решил проблему путем записи функции импорта сам вместо того, чтобы использовать Рабочие книги. OpenText.

Я просто открываю файл CSV как текстовый файл, читаю линию за линией, разделяю каждую строку на разделенные элементы точки с запятой и запиши каждый элемент в ячейку.

Sub ImportCSVFile(filepath As String)
    Dim line As String
    Dim arrayOfElements
    Dim linenumber As Integer
    Dim elementnumber As Integer
    Dim element As Variant

    linenumber = 0
    elementnumber = 0

    Open filepath For Input As #1 ' Open file for input
        Do While Not EOF(1) ' Loop until end of file
            linenumber = linenumber + 1
            Line Input #1, line
            arrayOfElements = Split(line, ";")

            elementnumber = 0
            For Each element In arrayOfElements
                elementnumber = elementnumber + 1
                Cells(linenumber, elementnumber).Value = element
            Next
        Loop
    Close #1 ' Close file.
End Sub

Получил вдохновение от Shasur: http://vbadud.blogspot.com/2007/06/vba-read-text-files-with-leading.html

Я все еще не знаю почему Workbooks.OpenText не работает над моей системой даже при том, что это, кажется, работает над системой пользователя Remou. Я предполагаю, что это могло бы иметь некоторое отношение к языку операционной системы (английский) и региональные настройки и настройки языка (немецкий язык, Швейцария), но я не уверен.

Так или иначе обходное решение работает на меня. Спасибо всем за Вас предложения и справка!

3
ответ дан 18 December 2019 в 14:52
поделиться

Не уверенный, но можно попытаться записать макрос, чтобы сделать то же самое и проверить код VBA, который оно производит. Вы могли бы получить подсказку там относительно того, что отсутствует.

2
ответ дан 18 December 2019 в 14:52
поделиться

Я нахожу, что это работает на меня в Excel 2000:

Workbooks.OpenText filename:=myFilename, _
    DataType:=xlDelimited, Semicolon:=True
2
ответ дан 18 December 2019 в 14:52
поделиться

Вот OpenText метод от Excel 2000:

Метод OpenText

Загрузки и синтаксические анализы текстовый файл как новая рабочая книга с одинарной таблицей, которая содержит проанализированные данные текстового файла.

Синтаксис

выражение. OpenText (Имя файла, Источник, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Вкладка, Точка с запятой, Запятая, Пространство, Другой, OtherChar, FieldInfo, DecimalSeparator, ThousandsSeparator)

источник

и вот версия Excel 2003:

Метод OpenText [ссылка языка Excel 2003 VBA]

Загрузки и синтаксические анализы текстовый файл как новая рабочая книга с одинарной таблицей, которая содержит проанализированные данные текстового файла.

выражение. OpenText (FileName, Источник, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Вкладка, Точка с запятой, Запятая, Пространство, Другой, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Локальный)

источник

так Local был действительно новый параметр для Excel 2003 и не будет работать в Excel 2000

Никакая идея относительно причины ошибочного поведения. Local параметр определяется как:

Локальный Дополнительный Вариант. Укажите Верный, если региональные настройки машины должны использоваться для разделителей, чисел и форматирования данных.

Вы могли бы хотеть перепроверить региональные настройки на ПК Excel 2000 и проверку, чтобы видеть, существует ли что-нибудь, что может заставить данные неправильно интерпретироваться. Кроме того, попытайтесь явно указать DecimalSeparator и ThousandsSeparator параметры на методе Excel 2000 и видят, помогает ли это

2
ответ дан 18 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: