有没有办法在出现警告消息框之前检测是否使用VBA建立数据连接失败?

问题描述 投票:2回答:2

我担心的是我想要连接的文件中有一个读写锁,因为它正被一个应用程序使用,如图所示:Locked MS Access File

当我尝试刷新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
excel vba excel-vba ms-access access-vba
2个回答
0
投票

在VBA中,.IsConnected是一个布尔属性,其工作方式如下:

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

它有助于查看VBA内置库,按Ctrl + Space并查找有意义的内容:

enter image description here

OLEDBConnection.IsConnected Property (Excel)


0
投票

您应该尝试使用方法state来检查您的连接:

if ActiveWorkbook.Connections("Query - MS Access File").OLEDBConnection.State <> 1 then
   ' Your connection is not ready
end if
© www.soinside.com 2019 - 2024. All rights reserved.