Я недавно обновился до Office 365, и с ним упало несколько моих инструментов vba, но большинство из них легко исправимо.Это меня смущает:
Мой код использует таблицы запросов для получения некоторых данных из базы данных доступа (где, я подозреваю, это происходит), а затем выполняет некоторые вычисления перед созданием входного файла для некоторого внешнего программного обеспечения.,Затем я использую оболочку для запуска этого внешнего программного обеспечения с этим вновь созданным входным файлом перед извлечением и обработкой файла результатов для визуализации в Excel.Код обширный, поэтому я не буду здесь воспроизводить стопки кода.
Для запроса к БД я использую синтаксис (более подробное описание работы кода см. Ниже):
mydatabase.QueryTables.Add (... etc
Окно, которое появляется, когда я пытаюсь запустить скрипт, показано ниже, я использовал флаги окна сообщения, чтобы доказать, что это происходит, когда он пытается посмотреть в базе данных доступа в первый раз.
![enter image description here](https://i.stack.imgur.com/4ltkt.png)
Это прекрасно работало в Excel 2011 до того, как я обновился до O365. Обратите внимание, что доступ также обновлялся одновременно.
Я самоучка и не знаю, что это значит или как это исправить. Кто-нибудь может дать какое-нибудь понимание?
Как работает код:
В основной части:
MsgBox "Starting Query"
gtdatabase.Visible = xlSheetHidden 'hide the worksheet
Create_DBQuery number
MsgBox "Completing Query"
Я вижу «Запуск запроса», но затем окно «Выбор источника данных», не видя, что мой запрос был завершен. Подпункт «CreateDBQuery» работает следующим образом (изменены, поэтому идентификаторы удалены):
Sub Create_DBQuery(ByVal number As String)
'
With mydatabase.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=MyDept;Description= GT Database;UID=Administrator;APP=Microsoft Office 2003;WSID=XXXX111;DATABASE=GTDB;Tr" _
), Array("usted_Connection=Yes")), Destination:=mydatabase.Range("A1"))
.CommandText = Array( _
"SELECT DataSheetSummary.a, DataSheetSummary.b, DataSheetSummary.c, DataSheetSummary.d, DataSheetSummary.e, DataSheetSummary.f, DataSheetSummary.g, DataSheetSummary.h, Data" _
, _
"SheetSummary.j, DataSheetSummary.k, DataSheetSummary.l, DataSheetSummary.m, DataSheetSummary.n, DataSheetSummary.p, DataSheetSummary.q, DataSheetSummary.r, DataSheetSummary." _
, _
"s, DataSheetSummary.t, DataSheetSummary.u, DataSheetSummary.v, DataSheetSummary.w" & Chr(13) & "" & Chr(10) & "FROM GT.dbo.DataSheetSummary DataSheetSummary" & Chr(13) & "" & Chr(10) & "WHERE (DataSheetSummary.DataSheet_Number Like '" & number & "')" _
& Chr(13) & "" & Chr(10))
.Name = "Query from GT_2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub