Я делаю макрос на excel, который импортирует данные из MySQL (с помощью querytables.add и с использованием OBCD), и каждый раз, когда я запускаю макрос, он создает новое соединение и его отходы времени и пространства. Есть ли функция, чтобы знать, имеет ли ячейка/лист соединение с ней, поэтому мне не нужно снова импортировать данные и создать новое соединение или код, чтобы узнать, когда последний раз подключение было обновлено.Поиск импортированных данных в ячейку, чтобы остановить их импорт. VBA
Я искал что-то, но кажется, что нет ничего подобного, так что, возможно, и альтернативный способ сделать это будет полезно, спасибо!
Код:
Worksheets("Hoja1").Activate
Dim sqlstring As String
Const connstring As String = "ODBC;DSN=blabla;UID=blabla;PWD=blabla"
if "***Range("A1") has a connection***" then
ActiveWorkbook.Connections("Conexión").Refresh 'actualize the connection previously made
Else 'import the table from sql server
sqlstring = vbNullString
sqlstring = "SELECT * FROM ExTable WHERE year > '2012'"
With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A1"), Sql:=sqlstring)
.RefreshStyle = xlOverwriteCells
.Refresh BackgroundQuery:=False
End With
Кажется, что я искал, но im new на этом, поэтому я не понимаете «cn.Ranges (1)», принимало ли значение ячейки (1,1) «таблицы» подключения ?, предполагая, что соединение было импортировано на листе – AEPImiranda
@AEPImiranda 'cn.Ranges (1) 'создает область ячеек, в настоящее время покрываемую соединением. Вы можете проверить это, используя 'debug.print' на' cn.Ranges (1) .Address'. Он покажет область диапазона для таблицы или сводной таблицы, например. –