2014-03-07 156 views
1

我有一個vb.net應用程序,它打開一個Excel文件並將值放入其中。但是,如果用戶(我不得不承認這是非常愚蠢的:)),關閉工作簿,下次我的應用程序會嘗試給文件添加一個值時,它將顯示錯誤,因爲沒有打開excel文件。處理事件「Excel正在關閉」

如何防止excel被關閉,或者在excel關閉時禁用按鈕?

我用Excel 2003在Windows 7

編輯工作:這裏是打開的Excel

Private Sub Open_button_Click(sender As Object, e As EventArgs) Handles Open_button.Click 


    OpenFileDialog1.FileName = "" 
    OpenFileDialog1.Filter = "Excel files (*.xls)|*.xls" 
    OpenFileDialog1.ShowDialog() 
    filePath = OpenFileDialog1.FileName 
    If System.IO.File.Exists(filePath) Then 
     oExcel = CreateObject("Excel.Application") 
     oExcel.Visible = True 
     oBook = oExcel.Workbooks.Open(filePath) 


     oSheet = oBook.WorkSheets(1) 
     oExcel.Sheets(1).Select() 
     oExcel.ScreenUpdating = True 
     xlDown = Microsoft.Office.Interop.Excel.XlDirection.xlDown 
     xlUp = Microsoft.Office.Interop.Excel.XlDirection.xlUp 
     Me.Activate() 

    End If 
End Sub 
+0

你能告訴你用它來打開和修改代碼的情況下Excel文件?您無需自動化Excel來修改Excel文件 - 您可以打開它並在內部對其進行修改,而無需啓動應用程序的可視實例並對其進行控制。 –

+1

http://msdn.microsoft.com/zh-cn/library/office/microsoft.office.interop.excel.workbookevents_event.beforeclose%28v=office.15%29.aspx –

+0

JI需要Excel以便用戶可見。我將把代碼放在問題上。 漢斯這似乎是我需要的,但我不明白如何使用它 – pocpoc47

回答

2

您可以添加事件處理程序來檢測關閉事件,並在禁用按鈕的代碼處理程序。 從https://support.microsoft.com/en-us/kb/822750

Private EventDel_BeforeBookClose As Excel.AppEvents_WorkbookBeforeCloseEventHandler 

那麼你已經創建後,Excel對象

EventDel_BeforeBookClose = New Excel.AppEvents_WorkbookBeforeCloseEventHandler(_ 
     AddressOf BeforeBookClose) 
AddHandler xlApp.WorkbookBeforeClose, EventDel_BeforeBookClose 

,並添加一個子處理

Private Sub BeforeBookClose(ByVal Wb As Excel.Workbook, ByRef Cancel As Boolean)