Теперь тогда.У меня есть этот сценарий VBScript
Const inputfile = "New Microsoft Office Excel Worksheet (2).xlsx"
dim ado: set ado = CreateObject("ADODB.Connection")
ado.connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" _
& inputfile & """;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
ado.CursorLocation = 3
ado.open
ado.Execute "INSERT INTO [recalculated] ([TIME PERIOD]) " & _
"SELECT Format(CDate(Mid([TIME PERIOD], 8, 13)), 'mm/dd/yyyy') " & _
"AS [TIME PERIOD] FROM [input]"
ado.close
Таблицы в рабочей книге именуются диапазонами в своих собственных рабочих листах
input
:
recalculated
(т. Е. Пустая таблица с тем же именем столбца):
Сценарий выполняется без сообщения об ошибке, однако вместо этого данные вставляются в таблицу input
из recalculated
:
(отмечу, что на самом деле это поведение отличается от того, что я видел ранее - я добавил TOP 3
в запрос SQL для этого вопроса, потому чтоизначально таблица была перезаписана и не добавлена)
Но если я изменю выражение на что-то другое, например
ado.Execute "INSERT INTO [recalculated] ([TIME PERIOD]) " & _
" SELECT TOP 3 'cheese' AS [TIME PERIOD] FROM [input]"
, оно отлично работает, recalculated
заполняется, а input
-оставил как есть.
Кто-нибудь знает, что происходит и как я могу это исправить?По крайней мере, может ли кто-то воспроизвести это, просто чтобы доказать, что я не сумасшедший?
Я только что обнаружил, что это работает, как и ожидалось, если рабочая книга уже открыта в Excel, когда сценарийвыполняется