2016-02-26 1 views
-2

Я открываю файл excel из приложения формы окна vb.net.Как отключить кнопку закрытия Excel?

Затем коды vb.net совершают некоторые действия в этом файле excel.

Я хочу, чтобы пользователь не закрывал этот файл excel, нажав кнопку «закрыть» во время выполнения некоторых действий.

Итак, как отключить кнопку закрытия Excel?

+0

Вот решение VBA. http://www.ozgrid.com/forum/showthread.php?t=57334 Мне нужно решение vb.net! –

ответ

0

Да, вы можете это сделать. Вам необходимо объявить объект 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 
+1

Большое спасибо! Решаемые. –

+0

Ошибка довольно ясна: «WithEvents недействительно в объявлении локальной переменной» вы должны объявить его на уровне модуля или класса, как в моем примере –

+0

Вам необходимо объявить его «Public», «Private», «Friend' и т. Д. . –