2016-02-26 176 views
-2

我從vb.net窗體窗體應用程序打開excel文件。如何禁用excel關閉按鈕?

然後vb.net代碼在這個excel文件中做一些操作。

我希望用戶在進行某些操作時不要通過單擊excel關閉按鈕來關閉該excel文件。

那麼如何禁用excel關閉按鈕?

+0

這裏是VBA的解決方案。 http://www.ozgrid.com/forum/showthread.php?t=57334我需要vb.net解決方案! –

回答

0

是的,你可以做到這一點。您需要聲明您的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 
+1

非常感謝!解決了。 –

+0

錯誤很明顯「WithEvents在局部變量聲明中無效」您必須在模塊或類級別聲明它,如我的示例 –

+0

您需要聲明它爲'Public','Private','Friend'等 –