6

После обновления до Excel 2010 (с 2003 года) сценарий, используемый для стандартизации данных из импорта Access, перестал работать. Он возвращает ошибку: «Ошибка времени выполнения« 1004 »: метод« OpenText »объекта« Рабочие книги »не выполнен».

До части OpenText макрос ищет в папке самый последний файл с помощью DateCreated, а затем возвращает имя файла и путь.

Соответствующий код:

Workbooks.OpenText FileName:=myDir & "\" & strFilename, _
    Origin:=-535, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
    Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15 _
    , 2), Array(16, 3), Array(17, 3), Array(18, 3), Array(19, 3), Array(20, 2), Array(21, 2), _
    Array(22, 1), Array(23, 2), Array(24, 2), Array(25, 3), Array(26, 2), Array(27, 2), Array( _
    28, 2)), TrailingMinusNumbers:=True

Есть идеи, что может повесить Excel 2010 вверх?

Этот файл все еще является файлом .xls и работает в режиме совместимости, с которым у меня еще не было проблем ни в одном другом макросе.

ОБНОВЛЕНО после записи нового макроса и сравнения со старым:

Новый макрос с одним отличием, аргумент Origin.

В старом макросе:

Origin:=-535

Новый макрос:

Origin:=65001

Читая об источнике, это кажется источником импортируемого файла, и его можно опустить.

Какое значение будет иметь Origin при импорте? Тип данных уже указан. Origin контролирует кодировку?

При удалении Origin из исходного макроса возвращается та же ошибка. Изменение исходного значения на 65001 по-прежнему возвращает ту же ошибку.

2 ответа2

2

Проверьте путь:

UserProfileFolder = Environ("UserProfile")

а также

Workbooks.OpenText Filename:

В Office 2003 путь среды XP был:

%systemDrive%\Documents and Settings\{user}\My Documents

Для Vista и Windows 7 это:

%systemdrive%\users\Documents

где% systemdrive% обычно C:

1

@datatoo, ты указал мне правильное направление. Это была проблема переменной / пути. Каким-то образом я начал использовать strFullFile в качестве строки, чтобы получить полную строку пути к файлу. Однако я также просто изменил бы strFileName, добавив строку myDir для создания полного пути к файлу. Удаление изменения соответствующих ссылок на strFullFile на strFileName решило проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .