我從vb.net窗體窗體應用程序打開excel文件。如何禁用excel關閉按鈕?
然後vb.net代碼在這個excel文件中做一些操作。
我希望用戶在進行某些操作時不要通過單擊excel關閉按鈕來關閉該excel文件。
那麼如何禁用excel關閉按鈕?
我從vb.net窗體窗體應用程序打開excel文件。如何禁用excel關閉按鈕?
然後vb.net代碼在這個excel文件中做一些操作。
我希望用戶在進行某些操作時不要通過單擊excel關閉按鈕來關閉該excel文件。
那麼如何禁用excel關閉按鈕?
是的,你可以做到這一點。您需要聲明您的WorkBook對象WithEvents
,以便您可以掛入BeforeClose
事件。
這裏是一個完整的工作示例。它取消了保存被點擊Button2的,直到和代碼實際上是保存並關閉此時它允許保存發生的工作簿:
進口Microsoft.Office.Interop
Public Class Form1
Private _xlApp As Excel.Application
Private WithEvents _xlBook As Excel.Workbook
Private _cancelClose As Boolean = True
Private Sub _xlBook_BeforeClose(ByRef Cancel As Boolean) Handles _xlBook.BeforeClose
Cancel = _cancelClose
End Sub
Private Sub Open_Click(sender As Object, e As EventArgs) Handles OpenFileButton.Click
Dim filename As String = "C:\Temp\Book1.xlsx"
_xlApp = New Excel.Application
_xlApp.DisplayAlerts = False
_xlApp.Visible = True
_xlBook = _xlApp.Workbooks.Open(filename)
Dim xlSheet As Excel.Worksheet = CType(_xlBook.Sheets(1), Excel.Worksheet)
xlSheet.Cells(1, 1) = "Hello World 2"
End Sub
Private Sub Close_Click(sender As Object, e As EventArgs) Handles CloseFileButton.Click
_cancelClose = False
_xlBook.Save()
_xlBook.Close()
_xlApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(_xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(_xlApp)
End Sub
End Class
非常感謝!解決了。 –
錯誤很明顯「WithEvents在局部變量聲明中無效」您必須在模塊或類級別聲明它,如我的示例 –
您需要聲明它爲'Public','Private','Friend'等 –
這裏是VBA的解決方案。 http://www.ozgrid.com/forum/showthread.php?t=57334我需要vb.net解決方案! –