{"id":55000736,"date":"2010-08-01T00:00:00","date_gmt":"2020-05-22T22:07:00","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=736"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Word_Excel_und_Co_im_Griff","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/","title":{"rendered":"Word, Excel und Co. im Griff"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wollten Sie nicht schon immer mal die komplette Kontrolle &uuml;ber Word, Excel und Co. haben Naja, so ganz wird das wohl nie was werden, aber wir tun, was wir k&ouml;nnen. Zumindest erfahren Sie in diesem Beitrag, wie Sie Office-Anwendungen starten und in Ihrer Access-Anwendung auf verschiedene Ereignisse wie das &Ouml;ffnen eines Dokuments oder das Beenden der Office-Anwendung reagieren k&ouml;nnen.<\/b><\/p>\n<p>Umtriebige Access-Entwickler verwenden Excel und Word als Reporting-Tools, packen Produktkataloge aus der Tabelle in die PowerPoint-Pr&auml;sentation oder interagieren mit Outlook, um Mails zu versenden, Kontakte zu synchronisieren oder Termine zu koordinieren. Dazu &ouml;ffnen sie meist eine neue Instanz der jeweiligen Anwendung (soweit m&ouml;glich) oder greifen einfach auf eine bestehende zu. Sie erstellen neue Dokumente zum F&uuml;llen, &ouml;ffnen bestehende Dokumente zum Auslesen oder &auml;ndern.<\/p>\n<p><b>Starten und beenden, &ouml;ffnen und schlie&szlig;en<\/b><\/p>\n<p>Damit bei der Arbeit mit Office-Anwendungen, die per VBA automatisiert ge&ouml;ffnet wurden, keine R&uuml;ckst&auml;nde wie ge&ouml;ffnete Dokumente oder Anwendungen bleiben und andererseits keine Anwendungen geschlossen werden, die der Benutzer zuvor selbstst&auml;ndig ge&ouml;ffnet hat, kann man sich einiger Features der Objektmodelle der Office-Anwendungen bedienen. Dabei sollten Sie die folgenden Varianten ber&uuml;cksichtigen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Sie starten eine neue Instanz einer Anwendung. Dann sollten Sie diese auch anschlie&szlig;end wieder schlie&szlig;en.<\/li>\n<li class=\"aufz-hlung\">Sie verwenden eine bestehende Anwendung. Dann sollte diese anschlie&szlig;end nicht geschlossen werden, da der Benutzer sonst m&ouml;glicherweise recht konsterniert w&auml;re.<\/li>\n<li class=\"aufz-hlung\">Sie &ouml;ffnen oder erstellen ein Dokument in einer Anwendung (egal, ob diese extra gestartet oder &#8222;gekapert&#8220; wurde): Dann schlie&szlig;en Sie das Dokument anschlie&szlig;end auch wieder.<\/li>\n<\/ul>\n<p><b>Neue Instanz<\/b><\/p>\n<p>Heutzutage sollte ein Rechner nicht mehr in die Knie gehen, nur weil eine zweite oder auch dritte Instanz von Word oder Excel ge&ouml;ffnet wurde. Daher empfehlen wir, gar nicht erst zu pr&uuml;fen, ob eventuell bereits eine Instanz ge&ouml;ffnet ist, sondern gleich eine neue zu &ouml;ffnen.<\/p>\n<p>Da Sie in den meisten F&auml;llen etwas per VBA mit der Instanz erledigen m&ouml;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 &#8211; f&uuml;r die &uuml;brigen Office-Anwendungen sieht dies aber &auml;hnlich aus):<\/p>\n<pre>Dim objWord As Word.Application<\/pre>\n<p>F&uuml;r diese Variante brauchen Sie einen Verweis auf die jeweilige Bibliothek (<b>Extras|Verweise<\/b>, dort <b>Microsoft x y.0 Object Library <\/b>anhaken &#8211; <b>x <\/b>durch <b>Word<\/b>, <b>Excel<\/b>, <b>PowerPoint <\/b>oder <b>Outlook <\/b>und <b>y <\/b>durch die Versionsnummer ersetzen, zum Beispiel <b>12 <\/b>f&uuml;r Office 2007).<\/p>\n<p>Wer ohne Verweis auskommen und somit eine h&ouml;here Wahrscheinlichkeit erzielen m&ouml;chte, dass die Anwendung versions&uuml;bergreifend eingesetzt werden kann, verwendet diese Deklaration:<\/p>\n<pre>Dim objWord As Object<\/pre>\n<p>Daf&uuml;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&uuml;r Early Binding und Late Binding:<\/p>\n<pre>Set objWord = New Word.Application\r\nSet objWord = CreateObject(&quot;Word.Application&quot;)<\/pre>\n<p>Ein neues Dokument erstellen Sie unter Word zum Beispiel mit folgender Anweisung. Die Objektvariable <b>objDocument <\/b>speichert den Verweis auf das Dokument:<\/p>\n<pre>Dim objDocument As Word.Document\r\nSet objDocument = objWord.Documents.Add<\/pre>\n<p>Es gibt noch andere Varianten und Sie k&ouml;nnen auch bestehende Dokumente &ouml;ffnen, aber wir brauchen einfach nur einen Verweis auf irgendein Dokument. Wenn Sie einen Verweis auf ein Dokument besitzen, k&ouml;nnen Sie dieses auch kontrolliert schlie&szlig;en:<\/p>\n<pre>objDocument.Close<\/pre>\n<p>Diese Methode besitzt unter anderem einen Parameter namens <b>SaveChanges<\/b>, mit dem Sie angeben, ob &auml;nderungen gespeichert (<b>True<\/b>) oder das Dokument einfach so geschlossen werden soll (<b>False<\/b>).<\/p>\n<p>Wenn Sie ein neues Dokument anlegen und dieses ohne &auml;nderung mit <b>Close <\/b>schlie&szlig;en, wird es &uuml;brigens nicht gespeichert.<\/p>\n<p>Erst nach einer &auml;nderung des erzeugten Dokuments fragt Word nach dem Dateinamen und Speicherort. Um ein leeres Dokument zu speichern, m&uuml;ssen Sie explizit die <b>Save<\/b>&#8211; oder <b>SaveAs<\/b>-Methode verwenden.<\/p>\n<p>Die Word-Instanz beenden Sie mit der <b>Quit<\/b>-Methode, die ebenfalls den Parameter <b>SaveChanges <\/b>anbietet. Anschlie&szlig;end sollten Sie Objektvariablen f&uuml;r Dokumente und Anwendungen leeren:<\/p>\n<pre>Set objDocument = Nothing\r\nSet objWord = Nothing<\/pre>\n<p>F&uuml;r Excel und PowerPoint funktioniert obiges prinzipiell genauso, auch wenn die Objekte anders hei&szlig;en.<\/p>\n<p>Das Starten einer Excel-Instanz, das Erstellen eines Workbooks und das anschlie&szlig;ende kontrollierte Schlie&szlig;en erfordert unter Early Binding beispielsweise die folgenden Schritte:<\/p>\n<pre>Set objExcel = CreateObject(&quot;Excel.Application&quot;)\r\nobjExcel.Visible = True\r\nSet objWorkbook = objExcel.Workbooks.Add\r\nobjWorkbook.Close\r\nobjExcel.Quit\r\nSet objWorkbook = Nothing\r\nSet objExcel = Nothing<\/pre>\n<p>Und Sie k&ouml;nnen dies, einen entsprechenden Verweis vorausgesetzt, auch mit PowerPoint durchf&uuml;hren:<\/p>\n<pre>Dim objPowerPoint As PowerPoint.Application\r\nDim objPresentation As PowerPoint.Presentation\r\nSet objPowerPoint = CreateObject(&quot;PowerPoint.Application)&quot;\r\nobjPowerPoint.Visible = True\r\nSet objPresentation = objPowerPoint.Presentations.Add\r\nobjPowerPoint.Quit\r\nSet objPresentation = Nothing\r\nSet objPowerPoint = Nothing<\/pre>\n<p><b>&Uuml;berwachung<\/b><\/p>\n<p>Es kann aber auch sein, dass Sie eine Office-Anwendung starten und ein Dokument &ouml;ffnen, mit dem der Benutzer etwas erledigen soll. Nach der Durchf&uuml;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.<\/p>\n<p><!--30percent--><\/p>\n<p>In diesem Fall m&uuml;ssen Sie auf irgendeine Art und Weise auf das jeweilige Ereignis reagieren k&ouml;nnen. Schauen wir uns das Schlie&szlig;en einer Anwendung wie Word an.<\/p>\n<p>Das <b>Application<\/b>-Objekt, auf das wir ja einen Verweis in einer Objektvariablen speichern k&ouml;nnen, bietet eine Reihe Ereignisse an, auf die man mit entsprechender Vorbereitung reagieren k&ouml;nnte. Die Ereignisse finden Sie sch&ouml;n &uuml;bersichtlich im Objektkatalog (<b>F2<\/b>), wenn das VBA-Projekt einen Verweis auf die Word-Bibliothek enth&auml;lt (siehe Bild 1).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/WordExcelFernsteuern_5-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Objektkatalog mit Word-Ereignissen<\/span><\/b><\/p>\n<p>Der Umfang der Ereignisse ist in &auml;lteren Office-Versionen &uuml;blicherweise eingeschr&auml;nkt, wir werden bei den hier vorgestellten Ereignissen jedoch auf Besonderheiten hinweisen.<\/p>\n<p><b>Beenden abfangen<\/b><\/p>\n<p>Im ersten Anlauf soll die Access-Anwendung es mitbekommen, wenn der Benutzer die von Access aus ge&ouml;ffnete Word-Anwendung schlie&szlig;t. Dabei reicht das einfache Erscheinen eines Meldungsfensters mit einem kleinen Hinweis.<\/p>\n<p>Die notwendige Technik steht leider nur in Klassenmodulen zur Verf&uuml;gung, aber nicht in Standardmodulen (auch Formular- und Berichtsmodule sind allerdings Klassenmodule).<\/p>\n<p>Wir versuchen es der Einfachheit halber mit einem Formularmodul. Dazu statten wir ein neues Formular mit einer Schaltfl&auml;che namens <b>cmdWordStarten <\/b>aus, wodurch das Klassenmodul angelegt und mit einer leeren Ereignisprozedur gef&uuml;llt wird.<\/p>\n<p>Diesem Klassenmodul f&uuml;gen Sie nun zun&auml;chst eine Objektvariable zum Speichern des Verweises auf die Word-Instanz hinzu, wobei Sie das Schl&uuml;sselwort <b>WithEvents <\/b>verwenden:<\/p>\n<pre>Dim WithEvents objWord As Word.Application<\/pre>\n<p>Dies f&uuml;hrt dazu, dass Sie im aktuellen Klassenmodul Ereignisprozeduren des Word-Objekts anlegen k&ouml;nnen. Den Beweis liefert ein Blick in die Kombinationsfelder zur Auswahl von Objekten und Methoden im Codefenster des VBA-Editors (siehe Bild 2).<\/p>\n<p>Bevor wir das Ereignis <b>Quit <\/b>implementieren, erstellen wir zun&auml;chst ein neues Word-Objekt und machen es sichtbar:<\/p>\n<pre>Private Sub cmdWortStarten_Click()\r\n    Set objWord = New Word.Application\r\n    objWord.Visible = True\r\nEnd Sub<\/pre>\n<p>Dann w&auml;hlen wir wie in Bild 2 das Ereignis <b>Quit <\/b>des Objekts <b>objWord<\/b> aus und f&uuml;llen die nun erscheinende Ereignisprozedur mit drei Anweisungen zum Ausblenden von Word, zum Anzeigen des Meldungsfensters als Beweis, dass wir das Beenden von Word auch von der aufrufenden Anwendung aus registrieren k&ouml;nnen, und zum Leeren der Objektvariablen aus:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/WordExcelFernsteuern_5-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Die Ereignisse von Word stehen auch f&uuml;r Access-Klassen zur Verf&uuml;gung.<\/span><\/b><\/p>\n<pre>Private Sub objWord_Quit()\r\n    objWord.Visible = False\r\n    MsgBox &quot;Word geschlossen&quot;\r\n    Set objWord = Nothing\r\nEnd Sub<\/pre>\n<p>W&auml;hrend die <b>Quit<\/b>-Ereignisprozedur ausgef&uuml;hrt wird, ist Word noch ge&ouml;ffnet und verhindert in diesem Augenblick das Anzeigen des Meldungsfensters &#8211; daher blenden wir es vorher aus.<\/p>\n<p><b>Dokumentaktionen tracken<\/b><\/p>\n<p>Auch f&uuml;r das &Ouml;ffnen, Schlie&szlig;en und Wechseln von Dokumenten bietet Word passende Ereignisse. Einige davon finden Sie bereits im <b>Application<\/b>-Objekt. Die Ereignisprozedur <b>NewDocument <\/b>des <b>Application<\/b>-Objekts k&ouml;nnen Sie beispielsweise verwenden, um ein durch den Benutzer neu ge&ouml;ffnetes Dokument gleich per Verweis in einer Objektvariablen zu speichern. Dazu brauchen Sie erstmal eine entsprechende Objektvariable:<\/p>\n<pre>Dim WithEvents objDocument As Word.Document<\/pre>\n<p>Auch diese Objektvariable bringt Ereignisse mit, die wir mit <b>WithEvents <\/b>verf&uuml;gbar machen. Der Verweis wird beim Erstellen des Dokuments schlie&szlig;lich so in der Objektvariablen gespeichert:<\/p>\n<pre>Private Sub objWord_NewDocument(ByVal Doc As Word.Document)\r\n    Set objDocument = Doc\r\nEnd Sub<\/pre>\n<p>Damit k&ouml;nnen wir nun einiges anfangen &#8211; zum Beispiel den Zeitpunkt abfangen, an dem der Benutzer das Dokument schlie&szlig;t:<\/p>\n<pre>Private Sub objDocument_Close()\r\n    MsgBox &quot;Neues Dokument geschlossen&quot;\r\nEnd Sub<\/pre>\n<p><b>Mehrere Dokumente im Griff<\/b><\/p>\n<p>Stellt sich noch die Frage, wie man mit mehreren gleichzeitig ge&ouml;ffneten Dokumenten umgeht. Eines ist klar: Mit einer Objektvariablen k&ouml;nnen Sie nur ein Dokument referenzieren. Sobald der Benutzer ein neues Dokument &ouml;ffnet und Sie die Objektvariable auf dieses Dokument einstellen, k&ouml;nnen Sie dar&uuml;ber nicht mehr auf das vorher referenzierte Dokument zugreifen.<\/p>\n<p>Also brauchen wir f&uuml;r diesen Fall wohl ausreichend Objektvariablen. Aber wie viele sind genug Am besten suchen wir gleich nach einer anderen L&ouml;sung, die flexibel Objektvariablen nachliefert. Diese sieht so aus, dass wir eine kleine Klasse entwerfen, die beliebig oft neu erzeugt werden kann und jeweils eine Objektvariable speichert. <\/p>\n<p>Um das &Ouml;ffnen und Schlie&szlig;en von Dokumenten unter der von Access aus ge&ouml;ffneten Word-Instanz durch den Benutzer zu kontrollieren, schreiben wir Meldungen &uuml;ber die entsprechenden Ereignisse in ein Textfeld des Formulars <b>frmWord_MehrereDokumente <\/b>(siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_04\/WordExcelFernsteuern_5-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Dieses Formular zeigt Erstellungs-, &Ouml;ffnungs- und Schlie&szlig;en-Vorg&auml;nge in Word an.<\/span><\/b><\/p>\n<p>Wir brauchen drei Variablen f&uuml;r dieses Beispiel. <b>objWord <\/b>speichert wie oben den Verweis auf die Word-Anwendung, <b>objDocumentWrapper <\/b>speichert den Verweis auf die Klasse, die ein Word-Dokument repr&auml;sentiert, und <b>colDocuments <\/b>speichert Verweise auf die verschiedenen <b>objDocumentWrapper<\/b>-Objekte:<\/p>\n<pre>Dim WithEvents objWord As Word.Application\r\nDim objDocumentWrapper As clsDocumentWrapper\r\nDim colDocuments As Collection<\/pre>\n<p>Im Detail wird beim Klick auf die Schaltfl&auml;che <b>Word starten <\/b>eine Word-Instanz erzeugt und sichtbar gemacht sowie das <b>Collection<\/b>-Objekt erstellt:<\/p>\n<pre>Private Sub cmdWordStarten_Click()\r\n    Set objWord = Nothing\r\n    Set objWord = New Word.Application\r\n    objWord.Visible = True\r\n    Set colDocuments = New Collection\r\nEnd Sub<\/pre>\n<p>Da <b>objWord <\/b>mit <b>WithEvents <\/b>deklariert wurde, k&ouml;nnen wir zwei Ereignisprozeduren implementieren, die beim &Ouml;ffnen und beim Anlegen eines Dokuments ausgel&ouml;st werden. Da beide &auml;hnlich aufgebaut sind, schauen wir uns nur die an, die beim &Ouml;ffnen ausgel&ouml;st wird.<\/p>\n<p>Diese Prozedur erzeugt zun&auml;chst ein neues Objekt auf Basis der Klasse <b>clsDocumentWrapper<\/b>, deren Aufbau wir uns gleich ansehen. Sie &uuml;bergibt diesem Objekt zwei Objektverweise: einen auf das ge&ouml;ffnete Dokument, das die Ereignisprozedur selbst mit dem Parameter <b>Doc <\/b>mitliefert, und einen Verweis auf die aufrufende Klasse, hier das Formular (dies w&uuml;rde auch von einem allein stehenden Klassenmodul aus funktionieren).<\/p>\n<p>Das so ausgestattete Objekt <b>objDocumentWrapper <\/b>wird nun zur Collection <b>colDocuments <\/b>hinzugef&uuml;gt. Au&szlig;erdem tr&auml;gt die Prozedur in das Textfeld <b>txtWordaktionen <\/b>einen Vermerk &uuml;ber das &Ouml;ffnen eines Dokuments ein und gibt dabei auch den Dokumentnamen an:<\/p>\n<pre>Private Sub objWord_DocumentOpen(ByVal Doc As Word.Document)\r\n    Set objDocumentWrapper = New clsDocumentWrapper\r\n    With objDocumentWrapper\r\n          Set .Document = Doc\r\n        Set .Form = Me\r\n    End With\r\n    colDocuments.Add objDocumentWrapper\r\n    Me!txtWordaktionen.SetFocus\r\n    Me!txtWordaktionen.Text = &quot;Dokument ge&ouml;ffnet: &quot; &amp; Doc.Name &amp; vbCrLf &amp; Me!txtWordaktionen.Text\r\nEnd Sub<\/pre>\n<p>Werfen wir nun zun&auml;chst einen Blick auf das Klassenmodul <b>clsDocumentWrapper<\/b>, das ja unter anderem die Dokumentverweise beherbergt.<\/p>\n<p>Dieses besitzt die zwei Objektvariablen zum Aufnehmen der Verweise auf das referenzierte Word-Dokument sowie das erzeugende Formular:<\/p>\n<pre>Dim WithEvents m_Document As Word.Document\r\nDim m_Form As Form<\/pre>\n<p>Die folgenden beiden <b>Property Set<\/b>-Prozeduren erlauben das F&uuml;llen dieser beiden Variablen von au&szlig;erhalb, also beispielsweise von den oben beschriebenen Prozeduren des Formulars aus:<\/p>\n<pre>Public Property Set Document(objDocument As Word.Document)\r\n    Set m_Document = objDocument\r\nEnd Property\r\nPublic Property Set Form(frm As Form)\r\n    Set m_Form = frm\r\nEnd Property<\/pre>\n<p>Nun k&ouml;nnen wir Word starten, ein paar Dokumente darin anzeigen und haben eine Collection, die Objekte enth&auml;lt, die auf die Word-Dokumente verweisen. Wie aber k&ouml;nnen wir nun Ereignisse der Word-Dokumente wie etwa das Schlie&szlig;en abfangen und dem aufrufenden Formular mitteilen<\/p>\n<p>Dazu dient der Verweis auf das Formular, den wir beim Erzeugen von <b>objDocumentWrapper <\/b>&uuml;bergeben haben. Mit einem solchen Verweis k&ouml;nnen wir auch von in einer Collection gespeicherten Objekten aus auf das Formular-Objekt zugreifen.<\/p>\n<p>Was genau bringt das aber Nun, wir bringen einfach im Formular-Klassenmodul eine &ouml;ffentliche Prozedur unter, die als Parameter einen Verweis auf das zu schlie&szlig;ende Dokument erwartet und den Schlie&szlig;en-Vorgang im Textfeld <b>txtWordaktionen <\/b>vermerkt:<\/p>\n<pre>Public Sub DocumentClosed(objDocument As Word.Document)\r\n    Me!txtWordaktionen.SetFocus\r\n    Me!txtWordaktionen.Text = &quot;Dokument geschlossen: &quot; &amp; objDocument.Name &amp; vbCrLf &amp; Me!txtWordaktionen.Text\r\nEnd Sub<\/pre>\n<p>Diese Prozedur m&uuml;ssen wir nur noch von <b>objDocumentWrapper <\/b>aus aufrufen, und zwar genau beim Schlie&szlig;en eines Dokuments.<\/p>\n<p>Dies erledigt die Ereignisprozedur <b>m_Document_Close <\/b>mit einem einfachen Verweis auf das Formular und dem Aufruf der Methode <b>DocumentClosed<\/b>: <\/p>\n<pre>Private Sub m_Document_Close()\r\n    m_Form.DocumentClosed m_Document\r\nEnd Sub<\/pre>\n<p>Fertig! Das Formular zeigt im Textfeld <b>txtWordaktionen <\/b>nun jedes &Ouml;ffnen, Erstellen und Schlie&szlig;en von Dokumenten durch den Benutzer an. Nochmal zur &Uuml;bersicht der Ablauf:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Ein Klick auf die Schaltfl&auml;che <b>Word starten <\/b>erzeugt eine neue Word-Instanz.<\/li>\n<li class=\"aufz-hlung\">Der Benutzer erzeugt ein neues Dokument.<\/li>\n<li class=\"aufz-hlung\">Dies l&ouml;st ein Ereignis der Objektvariablen der Word-Instanz aus.<\/li>\n<li class=\"aufz-hlung\">Dieses Ereignis erzeugt eine neue Instanz der Klasse <b>clsDocumentWrapper <\/b>und &uuml;bergibt dieser Verweise auf das Word-Dokument und sich selbst.<\/li>\n<li class=\"aufz-hlung\">Die Instanz von <b>clsDocumentWrapper <\/b>wird in einer Collection gespeichert, damit sie nicht verloren geht.<\/li>\n<li class=\"aufz-hlung\">Wenn der Benutzer das Dokument schlie&szlig;t, l&ouml;st dies ein Ereignis des in der Instanz von <b>clsDocumentWrapper <\/b>gespeicherten Dokument-Objekts aus.<\/li>\n<li class=\"aufz-hlung\">Dieses Ereignis ruft eine Methode des Formulars auf, in die Sie durch das Schlie&szlig;en des Dokuments verursachte Aktionen eintragen k&ouml;nnen &#8211; im vorliegenden Fall das einfache Anzeigen einer Information &uuml;ber den Schlie&szlig;en-Vorgang.<\/li>\n<\/ul>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Neben einigen Techniken f&uuml;r den Zugriff auf Office-Anwendungen erfahren Sie hier auch, wie Sie mehrere vom Benutzer ge&ouml;ffnete Dokumente b&auml;ndigen und auf das Ende ihrer Bearbeitung reagieren k&ouml;nnen. Auch wenn die Vorgehensweise des Speicherns von Objektverweisen in Collections zun&auml;chst abenteuerlich anmutet, werden Sie diese zu gegebener Zeit sicher gerne nutzen wollen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Word.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{B58257F3-998B-4053-9075-EF94746F3F02}\/aiu_736.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wollten Sie nicht schon immer mal die komplette Kontrolle &uuml;ber Word, Excel und Co. haben Naja, so ganz wird das wohl nie was werden, aber wir tun, was wir k&ouml;nnen &#8230; zumindest erfahren Sie in diesem Beitrag, wie Sie Office-Anwendungen starten und in Ihrer Access-Anwendung auf verschiedene Ereignisse wie das &Ouml;ffnen eines Dokuments oder das Beenden der Office-Anwendung reagieren k&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662010,66042010,44000026],"tags":[],"class_list":["post-55000736","post","type-post","status-publish","format-standard","hentry","category-662010","category-66042010","category-Interaktiv"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Word, Excel und Co. im Griff - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Word, Excel und Co. im Griff\" \/>\n<meta property=\"og:description\" content=\"Wollten Sie nicht schon immer mal die komplette Kontrolle &uuml;ber Word, Excel und Co. haben Naja, so ganz wird das wohl nie was werden, aber wir tun, was wir k&ouml;nnen ... zumindest erfahren Sie in diesem Beitrag, wie Sie Office-Anwendungen starten und in Ihrer Access-Anwendung auf verschiedene Ereignisse wie das &Ouml;ffnen eines Dokuments oder das Beenden der Office-Anwendung reagieren k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:07:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Word, Excel und Co. im Griff\",\"datePublished\":\"2020-05-22T22:07:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/\"},\"wordCount\":2164,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/96624acc3e104a0e95c6b9c0bdb4c05f\",\"articleSection\":[\"2010\",\"4\\\/2010\",\"Interaktiv\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/\",\"name\":\"Word, Excel und Co. im Griff - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/96624acc3e104a0e95c6b9c0bdb4c05f\",\"datePublished\":\"2020-05-22T22:07:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/96624acc3e104a0e95c6b9c0bdb4c05f\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/96624acc3e104a0e95c6b9c0bdb4c05f\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Word_Excel_und_Co_im_Griff\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Word, Excel und Co. im Griff\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Word, Excel und Co. im Griff - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/","og_locale":"de_DE","og_type":"article","og_title":"Word, Excel und Co. im Griff","og_description":"Wollten Sie nicht schon immer mal die komplette Kontrolle &uuml;ber Word, Excel und Co. haben Naja, so ganz wird das wohl nie was werden, aber wir tun, was wir k&ouml;nnen ... zumindest erfahren Sie in diesem Beitrag, wie Sie Office-Anwendungen starten und in Ihrer Access-Anwendung auf verschiedene Ereignisse wie das &Ouml;ffnen eines Dokuments oder das Beenden der Office-Anwendung reagieren k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:07:00+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Word, Excel und Co. im Griff","datePublished":"2020-05-22T22:07:00+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/"},"wordCount":2164,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f","articleSection":["2010","4\/2010","Interaktiv"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/","url":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/","name":"Word, Excel und Co. im Griff - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f","datePublished":"2020-05-22T22:07:00+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/96624acc3e104a0e95c6b9c0bdb4c05f"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Word_Excel_und_Co_im_Griff\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Word, Excel und Co. im Griff"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000736"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000736\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}