Excel 2016 на компьютере с Windows 10 Pro: я могу открыть книгу и из
ДАННЫЕ / Из других источников / Мастер подключения к данным / odbc DSN
, где я выбираю свой пользовательский DSN и предоставляю дополнительную информацию.
Затем создается код VBA для установки соединения между моим компьютером и внешней базой данных SQL. Ранее я определил UserDSN для этого соединения.
Если я запишу этот процесс, я получу что-то вроде этого:
With ActiveWorkbook.Connections("MyDBx").ODBCConnection
.BackgroundQuery = True
.CommandType = xlCmdSql
.Connection = "ODBC;DSN=SQL2;"
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = "D:\MyDocs\My Data Sources\Mydbx.odc"
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=SQL2;" _
, Destination:=Range("$A$1")).QueryTable
.CommandText = Array("SELECT * FROM `MyDBx`.`tablea`")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = "D:\MyDocs\My Data Sources\MyDBx.odc"
.Refresh BackgroundQuery:=False
End With
Это работает, и я могу использовать код VBA для анализа и построения графиков данных.
Однако если я удалю созданный выше лист и затем попытаюсь перезапустить макрос, произойдет сбой в операторе
С ActiveWorkbook.Connections («MyDBx»). ODBCConnection
При удалении указанного листа появляется также предупреждение о том, что удаляемый лист содержит запрос.
Как захватить / создать код в макросе, который позволит моему макросу запускаться в новой / пустой книге с использованием вышеуказанного подключения к данным.
Очевидно, что я могу сохранить лист и всегда запускать макрос в этой книге, но не в другой книге.