Как каждый открывается, точка с запятой разграничила файл 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. Что региональный и настройки языка Вы имеете?
[Обновите 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. Я предполагаю, что это могло бы иметь некоторое отношение к языку операционной системы (английский) и региональные настройки и настройки языка (немецкий язык, Швейцария), но я не уверен.
Так или иначе обходное решение работает на меня. Спасибо всем за Вас предложения и справка!
Не уверенный, но можно попытаться записать макрос, чтобы сделать то же самое и проверить код VBA, который оно производит. Вы могли бы получить подсказку там относительно того, что отсутствует.
Я нахожу, что это работает на меня в Excel 2000:
Workbooks.OpenText filename:=myFilename, _
DataType:=xlDelimited, Semicolon:=True
Вот 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 и видят, помогает ли это