我有一个从Excel文件到Access文件的数据连接。问题是,如果正在使用Access文件,则无法建立数据连接。因此,解决方法是实际复制正在使用的Access文件并将其存储在其他位置,然后Excel文件将连接到该副本。
但是,最终需要更新重复的Access文件,但在连接到它的Excel文件打开时无法更新。因此,实际更新重复的Access文件的唯一方法是关闭Excel文件,然后覆盖它。我打算通过两个步骤实现这一目标:
1.)关闭Excel文件
Workbooks("Excel-file.xlsm").Close
2.)运行将更新Access文件的批处理文件:
Sub TryShell()
Dim PathCrnt As String
PathCrnt = ActiveWorkbook.Path
Call Shell(PathCrnt & "\TryShell.bat " & PathCrnt)
End Sub
问题是关闭excel文件后的行将不再运行(例如):
Workbooks("Excel-file.xlsm").Close
MsgBox "Hello"
您好将不再显示。
对于那些有兴趣看到我的MS 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; (changing to a value of 1 still results to an error to connect)
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-file.xlsm
的数据,可以将宏放入个人宏工作簿中。
我试图重现你的情况,事实上,一旦数据库打开,我无法刷新表。所以我转到了连接属性,定义选项卡,连接字符串,然后我改变了:
Jet OLEDB:Database Locking Mode=0
至
Jet OLEDB:Database Locking Mode=1
现在我可以在Excel中刷新表,即使它在Access中打开。