«Источник данных не может быть общим» после обновления до O365 - PullRequest
2 голосов
/ 19 июня 2019

Я недавно обновился до Office 365, и с ним упало несколько моих инструментов vba, но большинство из них легко исправимо.Это меня смущает:

Мой код использует таблицы запросов для получения некоторых данных из базы данных доступа (где, я подозреваю, это происходит), а затем выполняет некоторые вычисления перед созданием входного файла для некоторого внешнего программного обеспечения.,Затем я использую оболочку для запуска этого внешнего программного обеспечения с этим вновь созданным входным файлом перед извлечением и обработкой файла результатов для визуализации в Excel.Код обширный, поэтому я не буду здесь воспроизводить стопки кода.

Для запроса к БД я использую синтаксис (более подробное описание работы кода см. Ниже):

mydatabase.QueryTables.Add (... etc

Окно, которое появляется, когда я пытаюсь запустить скрипт, показано ниже, я использовал флаги окна сообщения, чтобы доказать, что это происходит, когда он пытается посмотреть в базе данных доступа в первый раз.

enter image description here

Это прекрасно работало в 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
...