我有一个从Excel文件到Access文件的数据连接。问题是,如果正在使用Access文件,则无法建立到该文件的数据连接。因此,解决方法是实际复制正在使用的Access文件,并将其存储在不同的位置,然后Excel文件将连接到该副本。
但是,复制的Access文件最终需要更新,但当与其连接的Excel文件处于打开状态时,无法更新该文件。因此,实际更新复制的Access文件的唯一方法是关闭Excel文件,然后覆盖它。我计划使用两个步骤来实现这一点:
1.)关闭Excel文件
Workbooks("Excel-file.xlsm").Close2.)运行将更新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"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发布于 2018-09-05 16:55:00
如果不再需要Excel-file.xlsm中的数据,可以将宏放入您的个人宏工作簿中。
发布于 2018-09-05 22:56:53
我试图重现您的情况,实际上,一旦数据库打开,我就无法刷新该表。因此,我转到Connection Properties,Definition选项卡,Connection String,然后进行了更改:
Jet OLEDB:Database Locking Mode=0至
Jet OLEDB:Database Locking Mode=1现在,我可以在Excel中刷新该表,即使它在Access中处于打开状态。
https://stackoverflow.com/questions/52180852
复制相似问题