Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2010.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Verwalten Sie Anwendungen und Dokumente mit entsprechenden Objektvariablen.

Techniken

Word, Excel, VBA, Klassen

Voraussetzungen

Access 2000 und höher

Beispieldateien

Word.mdb

Shortlink

www.access-im-unternehmen.de/736

Word, Excel und Co. im Griff

André Minhorst, Duisburg

Wollten Sie nicht schon immer mal die komplette Kontrolle über Word, Excel und Co. haben? Naja, so ganz wird das wohl nie was werden, aber wir tun, was wir können. Zumindest erfahren Sie in diesem Beitrag, wie Sie Office-Anwendungen starten und in Ihrer Access-Anwendung auf verschiedene Ereignisse wie das Öffnen eines Dokuments oder das Beenden der Office-Anwendung reagieren können.

Umtriebige Access-Entwickler verwenden Excel und Word als Reporting-Tools, packen Produktkataloge aus der Tabelle in die PowerPoint-Präsentation oder interagieren mit Outlook, um Mails zu versenden, Kontakte zu synchronisieren oder Termine zu koordinieren. Dazu öffnen sie meist eine neue Instanz der jeweiligen Anwendung (soweit möglich) oder greifen einfach auf eine bestehende zu. Sie erstellen neue Dokumente zum Füllen, öffnen bestehende Dokumente zum Auslesen oder Ändern.

Starten und beenden, öffnen und schließen

Damit bei der Arbeit mit Office-Anwendungen, die per VBA automatisiert geöffnet wurden, keine Rückstände wie geöffnete Dokumente oder Anwendungen bleiben und andererseits keine Anwendungen geschlossen werden, die der Benutzer zuvor selbstständig geöffnet hat, kann man sich einiger Features der Objektmodelle der Office-Anwendungen bedienen. Dabei sollten Sie die folgenden Varianten berücksichtigen:

  • Sie starten eine neue Instanz einer Anwendung. Dann sollten Sie diese auch anschließend wieder schließen.
  • Sie verwenden eine bestehende Anwendung. Dann sollte diese anschließend nicht geschlossen werden, da der Benutzer sonst möglicherweise recht konsterniert wäre.
  • Sie öffnen oder erstellen ein Dokument in einer Anwendung (egal, ob diese extra gestartet oder "gekapert" wurde): Dann schließen Sie das Dokument anschließend auch wieder.

Neue Instanz

Heutzutage sollte ein Rechner nicht mehr in die Knie gehen, nur weil eine zweite oder auch dritte Instanz von Word oder Excel geöffnet wurde. Daher empfehlen wir, gar nicht erst zu prüfen, ob eventuell bereits eine Instanz geöffnet ist, sondern gleich eine neue zu öffnen.

Da Sie in den meisten Fällen etwas per VBA mit der Instanz erledigen möchten, speichern Sie einen Verweis auf die jeweilige Anwendung in einer Objektvariablen, die zum Beispiel so aussieht (wir verwenden Word in diesem Beitrag als Beispielanwendung - für die übrigen Office-Anwendungen sieht dies aber ähnlich aus):

Dim objWord As Word.Application

Für diese Variante brauchen Sie einen Verweis auf die jeweilige Bibliothek (Extras|Verweise, dort Microsoft x y.0 Object Library anhaken - x durch Word, Excel, PowerPoint oder Outlook und y durch die Versionsnummer ersetzen, zum Beispiel 12 für Office 2007).

Wer ohne Verweis auskommen und somit eine höhere Wahrscheinlichkeit erzielen möchte, dass die Anwendung versionsübergreifend eingesetzt werden kann, verwendet diese Deklaration:

Dim objWord As Object

Dafür fallen aber Vorteile wie IntelliSense (automatisches Einblenden von Methoden und Eigenschaften im VBA-Editor) und die Verwendung von Konstanten weg. Unsere Empfehlung: Mit Verweis und Early Binding programmieren, vor Auslieferung Verweis rauswerfen und auf Late Binding umsteigen. Eine neue Instanz erstellen Sie mit den folgenden beiden Aufrufen für Early Binding und Late Binding:

Set objWord = New Word.Application

Set objWord = CreateObject("Word.Application")

Ein neues Dokument erstellen Sie unter Word zum Beispiel mit folgender Anweisung. Die Objektvariable objDocument speichert den Verweis auf das Dokument:

Dim objDocument As Word.Document

Set objDocument = objWord.Documents.Add

Es gibt noch andere Varianten und Sie können auch bestehende Dokumente öffnen, aber wir brauchen einfach nur einen Verweis auf irgendein Dokument. Wenn Sie einen Verweis auf ein Dokument besitzen, können Sie dieses auch kontrolliert schließen:

objDocument.Close

Diese Methode besitzt unter anderem einen Parameter namens SaveChanges, mit dem Sie angeben, ob Änderungen gespeichert (True) oder das Dokument einfach so geschlossen werden soll (False).

Wenn Sie ein neues Dokument anlegen und dieses ohne Änderung mit Close schließen, wird es übrigens nicht gespeichert.

Erst nach einer Änderung des erzeugten Dokuments fragt Word nach dem Dateinamen und Speicherort. Um ein leeres Dokument zu speichern, müssen Sie explizit die Save- oder SaveAs-Methode verwenden.

Die Word-Instanz beenden Sie mit der Quit-Methode, die ebenfalls den Parameter SaveChanges anbietet. Anschließend sollten Sie Objektvariablen für Dokumente und Anwendungen leeren:

Set objDocument = Nothing

Set objWord = Nothing

Für Excel und PowerPoint funktioniert obiges prinzipiell genauso, auch wenn die Objekte anders heißen.

Das Starten einer Excel-Instanz, das Erstellen eines Workbooks und das anschließende kontrollierte Schließen erfordert unter Early Binding beispielsweise die folgenden Schritte:

Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Add

objWorkbook.Close

objExcel.Quit

Set objWorkbook = Nothing

Set objExcel = Nothing

Und Sie können dies, einen entsprechenden Verweis vorausgesetzt, auch mit PowerPoint durchführen:

Dim objPowerPoint As PowerPoint.Application

Dim objPresentation As PowerPoint.Presentation

Set objPowerPoint = CreateObject("PowerPoint.Application)"

objPowerPoint.Visible = True

Set objPresentation = objPowerPoint.Presentations.Add

objPowerPoint.Quit

Set objPresentation = Nothing

Set objPowerPoint = Nothing

Überwachung

Es kann aber auch sein, dass Sie eine Office-Anwendung starten und ein Dokument öffnen, mit dem der Benutzer etwas erledigen soll. Nach der Durchführung dieser Arbeiten durch den Benutzer soll Access benachrichtigt werden, um beispielsweise ein neu erzeugtes Dokument in eine Liste aufzunehmen oder den Inhalt dieses Dokuments zu verarbeiten.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Excel-Daten importieren mit TransferSpreadsheet

Excel automatisieren

Ferngesteuerter Seriendruck mit Access und Word

Tilgen mit Access und Excel

Excel-Import-Assistent im Eigenbau

Tabellen wie unter Excel

Importieren von Textdateien

© 2003-2015 André Minhorst Alle Rechte vorbehalten.