Как создать событие WorkbookOpen для каждой книги? - PullRequest
0 голосов
/ 10 апреля 2019

Как я могу создать событие, которое срабатывает при открытии рабочей книги?Я хочу, чтобы общее событие для любой рабочей книги вместо того, чтобы вставлять что-либо в каждую рабочую книгу, будет запущено после ее открытия.

Я могу получить доступ к объекту приложения, используя это:

var xlApp = (Microsoft.Office.Interop.Excel._Application)ExcelDna.Integration.ExcelDnaUtil.Application;

Но яне уверен, куда идти оттуда?Такое видение возможно сделать в VBA:

Private WithEvents app As Application

Private Sub Workbook_Open()
    Set app = Application
End Sub

Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
    If Not Win_Toggle = 1 Then Exit Sub

    With app
        .WindowState = xlNormal
        .Left = -500
        .WindowState = xlMaximized
    End With
End Sub

1 Ответ

1 голос
/ 10 апреля 2019

Вы должны привести к Application вместо _Application, и вы получите доступ к событиям, которые вы ищете ...

var xlApp = (Microsoft.Office.Interop.Excel.Application)ExcelDna.Integration.ExcelDnaUtil.Application;
xlApp.WorkbookOpen += XlAppOnWorkbookOpen;

private void XlAppOnWorkbookOpen(Microsoft.Office.Interop.Excel.Workbook wb)
{
    // ...
}
...