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

Один из способов увидеть это: «nlog (n) + n» меньше, чем «2nlog (n)». Теперь вы можете сбросить 2.

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

5 ответов

[Обновите 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
поделиться

Еще один обходной путь - просто переименуйте файлы .csv в .txt и используйте метод OpenText.

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

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