Да, вы можете это сделать. Вам необходимо объявить объект WorkBook WithEvents
, чтобы вы могли подключиться к событию BeforeClose
.
вот полный рабочий пример. Он отменяет сохранение до Button2 не будет нажата, и код на самом деле сохранения и закрытия книги, в которой указать, что позволяет сохранить случиться:
Imports 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
Вот решение VBA. http://www.ozgrid.com/forum/showthread.php?t=57334 Мне нужно решение vb.net! –