簡體   English   中英

在Workbook.Close方法之后,如何運行存儲在工作簿模塊中的宏?

[英]How to run a macro that is stored in a module in a workbook after the Workbook.Close method?

我的Excel文件與Access文件之間存在數據連接。 問題是,如果正在使用Access文件,則無法建立數據連接。 因此,解決方法是實際復制正在使用的Access文件並將其存儲在其他位置,然后Excel文件將連接到該副本。

但是,重復的Access文件最終將需要更新,但是當打開與其相連的Excel文件時,將無法更新該文件。 因此,實際更新重復的Access文件的唯一方法是關閉Excel文件,然后將其覆蓋。 我計划通過2個步驟來實現:

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

現在,即使在Access中打開了表,我也可以刷新它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM