Есть ли способ определить, не удалось ли установить соединение для передачи данных с помощью VBA, до появления окон с предупреждающими сообщениями? - PullRequest
0 голосов
/ 10 сентября 2018

Меня беспокоит, что в файле, к которому я хочу подключиться, есть блокировка чтения-записи, потому что он используется приложением, как показано ниже: Заблокированный файл MS Access

Когда я пытаюсь обновить подключение к данным в MS Excel, появляются эти ошибки / уведомления, потому что не удается установить соединение с используемым файлом MS Access:

1st

2nd

3rd

4th

Мне интересно, есть ли способ для VBA определить, не удалось ли установить соединение для передачи данных. Я понятия не имею, как подойти к нему, и код VBA для обновления запроса показан ниже:

With ActiveWorkbook.Connections("Query - MS Access File")
    .OLEDBConnection.BackgroundQuery = False
    .Refresh
End With

Строка подключения моего подключения к данным Excel к файлу Access показана ниже:

Provider=Microsoft.ACE.OLEDB.12.0;
User ID=Admin;
Data Source=C:\Users\ACER\Desktop\Test.MDB;
Mode=Share Deny Write;
Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;
Jet OLEDB:Support Complex Data=False

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

В VBA .IsConnected является логическим свойством, которое работает следующим образом:

If ActiveWorkbook.Connections("Query - MS Access File").OLEDBConnection.IsConnected Then

Это помогает взглянуть на встроенные библиотеки VBA, нажав Ctrl + Пробел и ища что-то осмысленное:

enter image description here

OLEDBConnection.IsConnected Property (Excel)

0 голосов
/ 10 сентября 2018

Вы должны попробовать использовать метод state для проверки вашего соединения:

if ActiveWorkbook.Connections("Query - MS Access File").OLEDBConnection.State <> 1 then
   ' Your connection is not ready
end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...