Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

Behandlung von Ereignissen für Excel mithilfe von Visual Basic .NET

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

822750
Zusammenfassung
Dieser schrittweise aufgebaute Artikel beschreibt die Microsoft Office Excel 2003 und Microsoft Office Excel 2007-Ereignisse Automatisierungsclient zu behandeln, die Sie mithilfe von Visual Basic .NET entwickeln.

zurück zum Anfang

Sie können einen Ereignishandler mit Microsoft Visual Basic .NET 2003 oder Visual Basic .NET 2002 in einer der folgenden Methoden erstellen. Wie Sie einen Ereignishandler mit Visual Basic .NET erstellen wie Sie sollen, hängt Ereignisse den Ereignishandler zuordnen:
  • Sie erstellen i. d. r. einen Ereignishandler mit das Handles-Schlüsselwort mit dem WithEvents-Schlüsselwort. Wenn Sie mithilfe des WithEvents-Schlüsselworts eine Variable deklarieren, verbindet Visual Basic .NET automatisch auf die Ereignisse des Objekts zur Laufzeit. Um ein bestimmtes Ereignis für das Objekt zu behandeln, fügen Sie den relevanten Ereignishandler hinzu, indem Sie die Liste Klasse und der Liste Methode der Visual Studio .NET-Umgebung während Sie in der Codeansicht sind.
  • Mit dem Schlüsselwort AddHandler bietet Visual Basic .NET eine zweite Möglichkeit zum Behandeln von Ereignissen. Das AddHandler-Schlüsselwort und das RemoveHandler-Schlüsselwort lassen Sie starten und beenden Sie die Ereignisbehandlung für ein bestimmtes Ereignis dynamisch.
zurück zum Anfang

Die folgenden Schritten wird zum Verwenden von entweder Möglichkeit, von einem Automatisierungsclient Excel-Ereignisse zu verarbeiten, die mithilfe von Visual Basic .NET entwickelt:
  1. Starten Sie Visual Studio .NET 2002 bzw. Visual Studio .NET 2003. Im Menü Datei klicken Sie auf neu und klicken Sie dann auf Projekt . Wählen Sie unter Visual Basic-Projekte die Windows-Anwendung .

    Standardmäßig wird jetzt Form1 erstellt.
  2. Fügen Sie einen Verweis auf die Microsoft Excel Object Library hinzu. Gehen Sie hierzu folgendermaßen vor:
    1. Klicken Sie im Menü Projekt auf Verweis hinzufügen .
    2. Suchen Sie auf der Registerkarte COM Microsoft Excel 11.0 Object Library , und klicken Sie dann auf auswählen .
    3. Klicken Sie auf OK im Dialogfeld Verweis hinzufügen , um Ihre Auswahl zu bestätigen. Wenn Sie eine Aufforderung zum Wrapper für die Bibliotheken generieren, die Sie ausgewählt haben erhalten, klicken Sie auf Ja .
  3. Wählen Sie im Projekt die Option Modul hinzufügen . Wählen Sie in der Liste der Vorlagen Modul aus und klicken Sie dann auf Öffnen . Fügen Sie folgenden Code in das neue Modul:
       '==================================================================   'Demonstrates Using a Delegate for Event Handling   '==================================================================   Private xlApp As Excel.Application   Private xlBook As Excel.Workbook   Private xlSheet1 As Excel.Worksheet   Private xlSheet2 As Excel.Worksheet   Private xlSheet3 As Excel.Worksheet   Private EventDel_BeforeBookClose As Excel.AppEvents_WorkbookBeforeCloseEventHandler   Private EventDel_CellsChange As Excel.DocEvents_ChangeEventHandler   Public Sub UseDelegate()      'Start Excel and then create a new workbook.      xlApp = CreateObject("Excel.Application")      xlBook = xlApp.Workbooks.Add()      xlBook.Windows(1).Caption = "Uses WithEvents"      'Get references to the three worksheets.      xlSheet1 = xlBook.Worksheets.Item(1)      xlSheet2 = xlBook.Worksheets.Item(2)      xlSheet3 = xlBook.Worksheets.Item(3)      CType(xlSheet1, Excel._Worksheet).Activate()      'Add an event handler for the WorkbookBeforeClose event of the      'Application object.      EventDel_BeforeBookClose = New Excel.AppEvents_WorkbookBeforeCloseEventHandler( _            AddressOf BeforeBookClose)      AddHandler xlApp.WorkbookBeforeClose, EventDel_BeforeBookClose      'Add an event handler for the Change event of both Worksheet       'objects.      EventDel_CellsChange = New Excel.DocEvents_ChangeEventHandler( _            AddressOf CellsChange)      AddHandler xlSheet1.Change, EventDel_CellsChange      AddHandler xlSheet2.Change, EventDel_CellsChange      AddHandler xlSheet3.Change, EventDel_CellsChange      'Make Excel visible and give the user control.      xlApp.Visible = True      xlApp.UserControl = True   End Sub   Private Sub CellsChange(ByVal Target As Excel.Range)      'This is called when a cell or cells on a worksheet are changed.      Debug.WriteLine("Delegate: You Changed Cells " + Target.Address + " on " + _                        Target.Worksheet.Name())   End Sub   Private Sub BeforeBookClose(ByVal Wb As Excel.Workbook, ByRef Cancel As Boolean)      'This is called when you choose to close the workbook in Excel.      'The event handlers are removed and then the workbook is closed       'without saving changes.      Debug.WriteLine("Delegate: Closing the workbook and removing event handlers.")      RemoveHandler xlSheet1.Change, EventDel_CellsChange      RemoveHandler xlSheet2.Change, EventDel_CellsChange      RemoveHandler xlSheet3.Change, EventDel_CellsChange      RemoveHandler xlApp.WorkbookBeforeClose, EventDel_BeforeBookClose      Wb.Saved = True 'Set the dirty flag to true so there is no prompt to save.   End Sub
  4. Das Projekt ein anderes Modul hinzu, und fügen Sie folgenden Code im Modul:
       '==================================================================   'Demonstrates Using WithEvents for Event Handling   '==================================================================   Private WithEvents xlApp As Excel.Application   Private xlBook As Excel.Workbook   Private WithEvents xlSheet1 As Excel.Worksheet   Private WithEvents xlSheet2 As Excel.Worksheet   Private WithEvents xlSheet3 As Excel.Worksheet   Public Sub UseWithEvents()      'Start Excel and then create a new workbook.      xlApp = CreateObject("Excel.Application")      xlBook = xlApp.Workbooks.Add()      xlBook.Windows(1).Caption = "Uses WithEvents"      'Get references to the three worksheets.      xlSheet1 = xlBook.Worksheets.Item(1)      xlSheet2 = xlBook.Worksheets.Item(2)      xlSheet3 = xlBook.Worksheets.Item(3)      CType(xlSheet1, Excel._Worksheet).Activate()      'Make Excel visible and give the user control.      xlApp.Visible = True      xlApp.UserControl = True   End Sub   Private Sub xlApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, _     ByRef Cancel As Boolean) Handles xlApp.WorkbookBeforeClose      Debug.WriteLine("WithEvents: Closing the workbook.")      Wb.Saved = True 'Set the dirty flag to true so there is no prompt to save   End Sub   Private Sub xlSheet1_Change(ByVal Target As Excel.Range) Handles xlSheet1.Change      Debug.WriteLine("WithEvents: You Changed Cells " + Target.Address + " on Sheet1")   End Sub   Private Sub xlSheet2_Change(ByVal Target As Excel.Range) Handles xlSheet2.Change      Debug.WriteLine("WithEvents: You Changed Cells " + Target.Address + " on Sheet2")   End Sub   Private Sub xlSheet3_Change(ByVal Target As Excel.Range) Handles xlSheet3.Change      Debug.WriteLine("WithEvents: You Changed Cells " + Target.Address + " on Sheet3")   End Sub
  5. Fügen Sie die folgenden am Anfang der Module1.vb und Module2.vb:
    Imports Microsoft.Office.Interop
    Hinweis der genaue Name für den Office-Namespace in Abhängigkeit der Version von Office Primary Interop-Assembly (PIA) unterscheiden kann, die im globalen Assemblycache (GAC) registriert ist, wenn der Verweis zur Projektmappe hinzugefügt wird. Wenn Sie einen Build Fehlermeldung auf diese Anweisung erhalten, überprüfen Sie im Projektmappen-Explorer (unter References) angezeigt und ändern Sie den Namen entsprechend den Namen.
  6. Doppelklicken Sie im Projektmappen-Explorer auf Form1.vb um das Formular in der Entwurfsansicht anzuzeigen.
  7. Im Menü Ansicht wählen die Option Toolbox , um die Toolbox anzuzeigen und fügen Sie zwei Schaltflächen zu Form1 hinzu. Ändern Sie die Text -Eigenschaft des Button1 , indem Sie Mit WithEvents eingeben. Ändern Sie dann die Text -Eigenschaft der , indem Sie Mit Delegaten eingeben.
  8. Wählen Sie im Anzeigen die Option Code , um das Codefenster für das Formular anzuzeigen. Fügen Sie folgenden Code für die Click -Ereignishandler für die Schaltflächen:
    Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click        UseWithEvents()    End Sub    Private Sub Button2_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button2.Click        UseDelegate()    End Sub
zurück zum Anfang

  1. Drücken Sie [STRG]+[ALT]+[O], um das Ausgabefenster anzuzeigen.
  2. Drücken Sie F5, um erstellen und Ausführen des Programms.
  3. Klicken Sie auf das Formular auf Mit WithEvents .

    Das Programm startet Excel und erstellt eine Arbeitsmappe mit drei Arbeitsblättern.
  4. Zellen in einem oder mehreren Arbeitsblättern Daten hinzugefügt. Drücken Sie nach jeder Änderung die EINGABETASTE. Überprüfen Sie das Ausgabefenster in Visual Studio .NET, um überprüfen, ob die Ereignishandler aufgerufen werden.
  5. Beenden Sie Excel.
  6. Klicken Sie auf das Formular auf Delegaten verwenden .

    Erneut, das Programm startet Excel und erstellt dann eine Arbeitsmappe mit mehreren Arbeitsblättern.
  7. Zellen in einem oder mehreren Arbeitsblättern Daten hinzugefügt. Drücken Sie nach jeder Änderung die EINGABETASTE. Überprüfen Sie das Ausgabefenster in Visual Studio .NET, um überprüfen, ob die Ereignishandler aufgerufen werden.
  8. Beenden Sie Excel und schließen Sie das Formular, um die Debugsitzung zu beenden.
zurück zum Anfang

Wenn Sie den Code testen, erhalten Sie folgende Fehlermeldung:

Eine nicht behandelte Ausnahme des Typs 'System.InvalidCastException' ist in interop.excel.dll aufgetreten

Weitere Informationen: Schnittstelle nicht unterstützt


Weitere Informationen über Maßnahmen, wenn Sie diese Fehlermeldung erhalten finden Sie die folgende KB-Artikelnummer:
316653PRB: Fehler verwenden WithEvents oder Delegaten zur Behandlung von Excel-Ereignisse von Visual Basic .NET oder Visual c# .NET
zurück zum Anfang
Informationsquellen
Weitere Informationen zu Microsoft Office-Entwicklung mit Visual Studio .NET den folgenden Microsoft Developer Network (MSDN)-Website: Weitere Informationen zu automatisieren von Excel aus Visual Basic .NET finden Sie folgende Artikel der Microsoft Knowledge Base:
301982So wird 's gemacht: Automatisieren Sie Microsoft Excel aus Visual Basic .NET
302094So wird 's gemacht: Automatisieren Sie Excel mit Visual Basic .NET um füllen oder Daten in einem Bereich zu erhalten, mithilfe von arrays
zurück zum Anfang
XL2007

Warnung: Dieser Artikel wurde automatisch übersetzt

Eigenschaften

Artikelnummer: 822750 – Letzte Überarbeitung: 01/17/2007 07:10:47 – Revision: 4.3

  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • kbmt kbhowto KB822750 KbMtde
Feedback