【发布时间】:2018-06-22 08:08:44
【问题描述】:
我有一个工作簿,当你打开它时它会做一些非常棒的事情。这很好,我想保持原样,但我也想与这个神奇的工作簿相关的 VB.NET 项目分享一些内部功能。
我的 VB.NET 应用程序取代了打开事件的功能。因此,如果用户在 Excel 中打开工作簿,我希望魔法发生。如果我从我的 VB.NET 应用程序中打开同一个工作簿,我想禁止 Workbook_Open 事件,以便我可以从 VB.NET 中发挥作用。
在调用 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()
【问题讨论】: