Один из способов увидеть это: «nlog (n) + n» меньше, чем «2nlog (n)». Теперь вы можете сбросить 2.
[Обновите 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 и видят, помогает ли это
Еще один обходной путь - просто переименуйте файлы .csv в .txt и используйте метод OpenText.