如何在Workbook.Close方法之后运行存储在工作簿中的模块中的宏?

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

我有一个从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 vba excel-vba
2个回答
0
投票

如果您不再需要Excel-file.xlsm的数据,可以将宏放入个人宏工作簿中。


0
投票

我试图重现你的情况,事实上,一旦数据库打开,我无法刷新表。所以我转到了连接属性,定义选项卡,连接字符串,然后我改变了:

Jet OLEDB:Database Locking Mode=0

Jet OLEDB:Database Locking Mode=1

现在我可以在Excel中刷新表,即使它在Access中打开。

© www.soinside.com 2019 - 2024. All rights reserved.