2017-03-28 12 views
0

ワークブックがアクティブになるたびに「ワークブックウィンドウ」を最小化するアプリケーションクラスのイベントコードをアクティブ化する必要があります。ワークブックの使用方法オートメーションでアプリケーションクラスイベントをアクティブにする

C:\Book1.xlsxがアクティブになるたびに、「ワークブックウィンドウ」を最小化します。

テスト開始のためのコードです。

Imports Microsoft.Office.Interop 

Public Class Form1 

Public WithEvents wb1 As Excel.Workbook 

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load 

    Dim xlApp As New Excel.Application 
    xlApp.Visible = True 

    Threading.Thread.Sleep(10000) 

    Dim wb1 As Excel.Workbook 
    wb1 = xlApp.Workbooks.Open("C:\Book1.xlsx") 

    Threading.Thread.Sleep(100000000) 
End Sub 

End Class 

次のリンクはあなたをサポートしている場合があります。

https://support.microsoft.com/en-us/help/822750/how-to-handle-events-for-excel-by-using-visual-basic-.net

答えて

0

まず最初に行うには、クラスレベルにxlAppの宣言を移動し、WithEventsを宣言している:

Private WithEvents xlApp As New Excel.Application 

今、私たちは、具体的WindowActivateExcel.Applicationが付属していたイベントを利用することができます。

ブックウィンドウがアクティブになったときに発生します。

Private Sub xlApp_WindowActivate(Wb As Excel.Workbook, Wn As Excel.Window) Handles xlApp.WindowActivate 
    xlApp.WindowState = Excel.XlWindowState.xlMinimized 
End Sub 

そしてWindowResize:任意のワークブック・ウィンドウのサイズが変更されたとき

に発生します。

Private Sub xlApp_WindowResize(Wb As Excel.Workbook, Wn As Excel.Window) Handles xlApp.WindowResize 
    xlApp.WindowState = Excel.XlWindowState.xlMinimized 
End Sub 

あなたが見ることができるように、これらのハンドラ内では、私はxlMinimizedWindowStateプロパティを設定しています。これは、私が試してみるといつも再び最小化されることを意味します。

フルであなたのコードは次のようなものになります。

Public Class Form1 

    Private WithEvents xlApp As New Excel.Application 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 

     xlApp.Visible = True 

     Dim wb1 As Excel.Workbook 
     wb1 = xlApp.Workbooks.Open("C:\Book1.xlsx") 

    End Sub 

    Private Sub xlApp_WindowActivate(Wb As Excel.Workbook, Wn As Excel.Window) Handles xlApp.WindowActivate 
     xlApp.WindowState = Excel.XlWindowState.xlMinimized 
    End Sub 

    Private Sub xlApp_WindowResize(Wb As Excel.Workbook, Wn As Excel.Window) Handles xlApp.WindowResize 
     xlApp.WindowState = Excel.XlWindowState.xlMinimized 
    End Sub 

End Class