簡體   English   中英

如何防止由VB.NET打開Excel Workbook_Open事件引發

[英]How to prevent an Excel Workbook_Open event from firing when opened by VB.NET

我有一本工作簿,當您打開它時會做一些奇怪的事情。 太好了,我希望保持原樣,但我也想與與此魔術工作簿相關的VB.NET項目共享一些內部功能。

我的VB.NET應用程序取代了打開事件的功能。 因此,如果用戶在Excel中打開工作簿,則希望發生這種情況。 如果我從VB.NET應用程序中打開相同的工作簿,則要取消Workbook_Open事件,以便可以從VB.NET進行操作。

在調用Open之前,是否可以設置一個標志,使我可以從該工作簿運行宏,同時還可以抑制open事件?

VB.NET代碼如下所示:

' Set up Excel
Dim excelApp As Application
Dim thisWorkbook As Workbook
Dim excelBooks As Workbooks

' Start Excel 
excelApp = New Application With
{
    .Visible = False  ' Ninja mode
}

' Open the workbook
excelBooks = excelApp.Workbooks
thisWorkbook = excelBooks.Open(My.Settings.ExcelFileName)

' Run the subroutine.
excelApp.Run("WhizBang", SecretVBNETMagicPassedInToExcel)

' Close the workbook and release the COM objects.
thisWorkbook.Close(SaveChanges:=False)
Marshal.ReleaseComObject(thisWorkbook)
Marshal.ReleaseComObject(excelBooks)
excelApp.Quit() 
Marshal.ReleaseComObject(excelApp)
GC.Collect()

由於您不想運行的代碼位於Workbook_Open事件處理程序中,因此可以在打開工作簿之前為應用程序禁用事件,以防止調用處理程序代碼。

excelApp.EnableEvents = False

暫無
暫無

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

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