{"id":55000360,"date":"2006-06-01T00:00:00","date_gmt":"2021-02-11T20:53:51","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=360"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Von_Access_nach_Word","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/","title":{"rendered":"Von Access nach Word"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Erfahren Sie, wie Sie Word-Dokumente dynamisch erstellen.<\/p>\n<h3>Techniken<\/h3>\n<p>VBA, Word<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 2000 und h&ouml;her<\/p>\n<h3>Beispieldatei<\/h3>\n<p>AccessToWord.mdb<\/p>\n<h3><\/h3>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>&#8222;Von Access nach Word&#8220; &#8211; da kommt doch nicht zum x-ten Male diese (zugegebenerma&szlig;en oft gefragte) Serienbrief-Geschichte Jein. Serienbriefe hat Access im Unternehmen (eigentlich) schon ausreichend behandelt. Welche Gr&uuml;nde soll es noch geben, Word zur Ausgabe von Access-Daten zu nutzen Diese und die Frage nach der Umsetzung beantwortet der vorliegende Beitrag. Dabei erfahren Sie unter anderem, wie Sie Word starten und beenden, Dokumente und Bereiche referenzieren und diese mit den gew&uuml;nschten Daten aus einer Access-Datenbank f&uuml;llen.<\/b><\/p>\n<p>Serienbriefe sind &#8211; ganz klar &#8211; die Nummer Eins, wenn es um Anwendungen geht, die Access und Word miteinander verkn&uuml;pfen. Ob die Access-Datenbank nun eine Tabelle oder Abfrage zum F&uuml;llen eines durch den Benutzer unter Word initiierten Serienbriefs liefert oder ob man diese Aufgabe von Access aus startet &#8211; das Thema ist in Newsgroups und Foren immer wieder gefragt. Das Prinzip dabei ist ganz einfach: Man definiert in Word ein paar Serienbrieffelder f&uuml;r Informationen, die sich von Brief zu Brief &auml;ndern: Adressdaten, Begr&uuml;&szlig;ung, direkte Anrede im eigentlichen Text. Diese f&uuml;llt man mit den passenden Inhalten aus der gew&uuml;nschten Tabelle oder Abfrage.<\/p>\n<h3>Individualit&auml;t in Serie<\/h3>\n<p>Dem Erzeuger eines solchen Dokuments spart dies eine ganze Menge Arbeit. Der Empf&auml;nger denkt sich nicht viel dabei, denn er ist es gewohnt, in Anschreiben pers&ouml;nlich angeredet zu werden. Was aber, wenn nicht nur Adresse und diverse Floskeln individuell gestaltet werden sollen, sondern noch mehr: Etwa, um einem Kunden interessante Produkte nahe zu bringen, zu denen er Informationen w&uuml;nscht<\/p>\n<p>Man k&ouml;nnte meinen, das sei ja nicht viel anders als ein herk&ouml;mmlicher Serienbrief: Jeder Kunde bekommt ja ohnehin ein individuelles Anschreiben, dann kann man auch den Inhalt individuell gestalten. Oder etwa nicht Nun, soweit sich der Inhalt in ein oder mehrere Felder der verwendeten Datenherkunft quetschen l&auml;sst, ist das kein Problem. Wenn auf diese Weise etwa mehrere Produktbeschreibungen integriert werden sollen, die mehr als den reinen Beschreibungstext enthalten &#8211; also beispielsweise eine &uuml;berschrift mit dem Produktnamen, eine Abbildung oder Informationen wie Preis oder Lieferzeit &#8211; wird es hingegen schwierig: Das Ganze mag f&uuml;r ein einziges Produkt funktionieren, weil man dann f&uuml;r jedes Feld eine eigene Formatierung festlegen kann.<\/p>\n<p>Wenn aber jedes Anschreiben mehrere Produkte enthalten soll, wird es problematisch: Die Anzahl der Felder l&auml;sst sich n&auml;mlich nicht dynamisch anpassen wie etwa im Detailbereich eines Berichts, der die Datens&auml;tze einfach untereinander weg schreibt.<\/p>\n<p>Das Problem l&auml;sst sich genauer umrei&szlig;en: Dies ist der Versuch, das Ergebnis der Abfrage &uuml;ber zwei Tabellen mit einer m:n-Beziehung in einem Word-Dokument abzubilden, wobei die eine Seite der Beziehung die Tabelle der Empf&auml;nger und die andere Seite die Produkttabelle ist (bei einer 1:n-Beziehung w&auml;re die Darstellung im &uuml;brigen nicht wesentlich einfacher &#8211; Beispiel Kategorien und Artikel).<\/p>\n<h3>VBA kann alles<\/h3>\n<p>Ohne die komfortable Serienbrieffunktion wird es eng: Auch das programmatische F&uuml;llen einer Dokumentenvorlage mit vorbereiteten Textmarken scheitert zun&auml;chst, da auch hier die Anzahl der f&uuml;r die Anzeige des Produkts ben&ouml;tigten Abs&auml;tze nicht ohne Weiteres dynamisch einstellbar ist.<\/p>\n<p>Zum Gl&uuml;ck k&ouml;nnen Sie unter Word VBA einsetzen und genauso k&ouml;nnen Sie Word von Access aus per VBA fernsteuern. Das ist die Grundlage f&uuml;r die nachfolgend vorgestellten Techniken.<\/p>\n<p>Zum Fernsteuern von Word legen Sie am besten zun&auml;chst einen Verweis auf die passende Objektbibliothek an (siehe Bild 1).<\/p>\n<h3>Hinweis<\/h3>\n<p>Sie kommen zwar auch ohne aus, wenn Sie Late Binding verwenden m&ouml;chten (mehr dazu siehe Hinweis), aber zum Entwickeln sollten Sie die Vorz&uuml;ge des Early Bindings (deutsch: fr&uuml;he Bindung) genie&szlig;en: Dazu geh&ouml;rt unter anderem die Unterst&uuml;tzung von IntelliSense f&uuml;r die Elemente der referenzierten Bibliothek.<\/p>\n<p><IMG height=\"365\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic001.png\" width=\"467\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Herstellen eines Verweises auf die Word-Objektbibliothek<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Early Binding (also das Setzen eines Verweises und das Verwenden konkreter Objekte) setzt voraus, dass die verwendeten Bibliotheken auf allen Zielrechnern vorhanden sind. Sicherer ist der Einsatz von Late Binding: Dabei lassen Sie den Verweis weg und verwenden jeweils den Datentyp Object statt eines konkreten Typs wie etwa Word.Application bei der Deklaration. Wenn Sie eine Anwendung von Early Binding auf Late Binding umstellen, m&uuml;ssen Sie au&szlig;erdem ber&uuml;cksichtigen, dass die sprechenden Konstanten nicht mehr zur Verf&uuml;gung stehen. Statt dessen verwenden Sie die konkreten Zahlenwerte. Welcher Zahlenwert welcher Konstante entspricht, erfahren Sie im Objektkatalog: Suchen Sie einfach nach der gew&uuml;nschten Konstanten und lesen Sie im unteren Bereich den Zahlenwert ab &#8211; in Bild 2 ist dies beispielsweise der Wert -2 f&uuml;r die Konstante wdBorderLeft. Um sicherzugehen, dass Sie alle Konstanten durch die passenden Zahlenwerte ersetzt haben, kompilieren Sie einfach die Anwendung. Option Explicit sollte dabei allerdings aktiviert sein. <\/p>\n<p>Die Routine aus Quellcode 1 arbeitet zun&auml;chst nur mit der Word-Anwendung, ohne irgendwelche Dokumente zu &ouml;ffnen. Dabei deklariert sie eine Objektvariable f&uuml;r den Verweis auf die gew&uuml;nschte Instanz von Word.<\/p>\n<p>Offen ist noch, wie man an diese Instanz kommt: Gegebenenfalls ist Word schon ge&ouml;ffnet. In diesem Fall verwendet man diese Instanz und stellt die Variable objWord mit der GetObject-Methode auf diese Instanz ein. Es kann nat&uuml;rlich auch sein, dass Word noch nicht ge&ouml;ffnet ist: Dann startet die Routine mit CreateObject eine neue Instanz und verweist mit objWord auf diese.<\/p>\n<p><IMG height=\"385\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic002.png\" width=\"431\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Ermitteln des Wertes einer Konstanten im Objektkatalog<\/span><\/b><\/p>\n<p>Der Clou dieser Routine ist, dass die Suche nach einer vorhandenen Instanz am einfachsten &uuml;ber das Provozieren eines Fehlers m&ouml;glich ist: Vor dem Versuch, eine bestehende Instanz zu referenzieren, stellt die Routine die Fehlerbehandlung so ein, dass diese beim Auftreten eines Fehlers einfach zum n&auml;chsten Befehl springt.<\/p>\n<p>Diese Anweisung pr&uuml;ft, ob die Eigenschaft Number des Err-Objekts einen Wert gr&ouml;&szlig;er 0 hat &#8211; was auf das Auftreten eines Fehlers hinweist. Dieser kann eigentlich nur durch das Scheitern der Herstellung eines Verweises auf eine bestehende Word-Instanz entstanden sein, woraufhin die Routine eine neue Instanz erzeugt.<\/p>\n<p>Tritt kein Fehler auf, was beim &#8222;&uuml;bernehmen&#8220; einer bestehenden Instanz von Word der Fall ist, aktiviert die Routine diese.<\/p>\n<p>Zwischen der With- und der End With-Zeile findet die eigentliche Fernsteuerung (Automation) von Word statt. Hier ist Platz zum &ouml;ffnen oder Anlegen eines Word-Dokuments, f&uuml;r seine Bearbeitung und das Schlie&szlig;en des Dokuments.<\/p>\n<p>Zu guter Letzt beendet die Routine die Word-Instanz.<\/p>\n<p><b>Quellcode 1: Initialisieren von Word und anschlie&szlig;endes Beenden<\/b><\/p>\n<pre>Public Sub WordInitialisieren()\r\n    Dim objWord As Word.Application\r\n    On Error Resume Next\r\n    Set objWord = GetObject(, _        \"Word.Application\")\r\n    If Err.Number &gt; 0 Then\r\n        On Error Goto 0\r\n        Set objWord = _            CreateObject(\"Word.Application\")\r\n    Else\r\n        objWord.Activate\r\n    End If\r\n    With objWord\r\n        .Visible = True\r\n        ''Word etwas tun lassen\r\n    End With\r\n    objWord.Quit\r\n    Set objWord = Nothing\r\nEnd Sub<\/pre>\n<p>Es gibt drei M&ouml;glichkeiten, um an ein Dokument zum Eintragen von Daten zu kommen:<\/p>\n<li>Anlegen eines neuen Dokuments ohne Vorlage<\/li>\n<li>Anlegen eines neuen Dokuments mit Vorlage<\/li>\n<li>&ouml;ffnen eines bestehenden Dokuments<\/li>\n<p>Alle drei Varianten erfordern das Vorhandensein einer Objektvariablen, mit der Sie auf das Dokument verweisen, um es anschlie&szlig;end bearbeiten, drucken, speichern oder schlie&szlig;en zu k&ouml;nnen. F&uuml;gen Sie daher die folgende Zeile zu der Routine aus Quellcode 1 hinzu:<\/p>\n<pre>Dim objDocument As Word.Document<\/pre>\n<h3>Neues Dokument ohne Vorlage anlegen<\/h3>\n<p>Die folgenden Zeilen f&uuml;gen Sie in Quellcode an der Stelle ein, an der sich der Kommentar &#8222;Word etwas tun lassen&#8220; befindet:<\/p>\n<pre>Set objDocument = .Documents.Add\r\nobjDocument.SaveAs \"c:\\test.doc\"\r\nobjDocument.Close<\/pre>\n<p>Dies legt ein neues Word-Dokument ohne Vorlage an, speichert es unter dem Dateinamen c:\\test.doc und schlie&szlig;t das Dokument wieder.<\/p>\n<h3>Neues Dokument unter Verwendung einer Vorlage anlegen<\/h3>\n<p>Die Add-Methode der Documents-Auflistung von Word bietet einen Parameter zum Angeben der gew&uuml;nschten Formatvorlage. Wenn Sie die Add-Methode wie folgt erg&auml;nzen, legt Word ein neues Dokument auf Basis der angegebenen Formatvorlage an (in einer Zeile):<\/p>\n<pre>Set objDocument = .Documents.Add(\"MeineFormatvorlage.dot\")<\/pre>\n<p>Dabei geht Word davon aus, dass sich die Formatvorlage im Vorlagenverzeichnis befindet. Welches das ist, finden Sie mit folgender Anweisung, abgesetzt im Direktfenster, heraus:<\/p>\n<pre>Debug.Print Word.Options.DefaultFilePath(Path:= wdUserTemplatesPath)<\/pre>\n<h3>Bestehendes Dokument &ouml;ffnen<\/h3>\n<p>Das &ouml;ffnen eines bestehenden Dokuments ist ebenfalls ganz einfach. In diesem Fall verwenden Sie die Open-Methode der Documents-Auflistung:<\/p>\n<pre>Set objDocument = .Documents.Open(\"c:\\test.doc\")<\/pre>\n<p>VBA-Prozeduren nennt man in Word Makros (in den  anderen Office-Anwendungen au&szlig;er Access &uuml;brigens auch). Die von Access bekannten Makros haben damit also nichts gemein.<\/p>\n<p><!--30percent--><\/p>\n<p>Makros von Word &#038; Co. haben einen entscheidenden Vorteil: Sie k&ouml;nnen viele Ihrer T&auml;tigkeiten mit Word damit aufzeichnen und sich anschlie&szlig;end den so generierten VBA-Code ansehen und diesen anpassen.<\/p>\n<p>Wer sich nicht gut mit dem Objektmodell etwa von Word auskennt, findet hier einen guten Einstieg. Das Aufnehmen eines Makros geht ganz einfach:<\/p>\n<li>W&auml;hlen Sie in Word den Men&uuml;eintrag Extras\/Makro\/Aufzeichnen&#8230; aus und best&auml;tigen Sie den nun erscheinenden Dialog mit der Schaltfl&auml;che OK, nachdem Sie gegebenenfalls einen alternativen Makro-Namen eingegeben haben (siehe Bild 3).<\/li>\n<li>F&uuml;hren Sie die gew&uuml;nschten Aktionen aus &#8211; legen Sie ein neues Dokument an, f&uuml;gen Sie Text hinzu oder was Ihnen sonst gerade einf&auml;llt.<\/li>\n<li>Klicken Sie auf die Schaltfl&auml;che Aufzeichnung beenden der Mini-Men&uuml;leiste, die nach dem Start der Aufzeichnung erscheint. (<\/li>\n<p><IMG height=\"292\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic003.png\" width=\"360\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Eigenschaften eines aufzunehmenden Makros festlegen<\/span><\/b><\/p>\n<p>Fertig! Sie m&uuml;ssen nun noch mit Alt + F11 die VBA-Entwicklungsumgebung &ouml;ffnen und im Projekt-Explorer das Modul Normal\/Module\/NewMacros ausw&auml;hlen &#8211; Word legt Makros standardm&auml;&szlig;ig an diesem Ort in der Formatvorlage Normal.dot an (siehe Bild 4).<\/p>\n<p>Eine gro&szlig;e Hilfe bei Programmierfragen zu Word-VBA ist die FAQ von Ren&eacute; Probst unter folgender Adresse: http:\/\/mypage.bluewin.ch\/reprobst\/WordFAQ\/VBA.htm<\/p>\n<p>Die Inhalte dieser Seite verdeutlichen, dass der mit dem Makrorekorder erzeugte Code nur suboptimal ist &#8211; so wird dort &uuml;berwiegend mit dem Selection-Objekt gearbeitet, das gut geeignet ist, die manuell vorgenommenen &auml;nderungen am Dokument aufzuzeichnen. Viel m&auml;chtiger und schneller ist jedoch das Range-Objekt, mit dem sich Bereiche direkt ansprechen lassen.<\/p>\n<p>Dadurch f&auml;llt das f&uuml;r das Selection-Objekt typische Navigieren weg &#8211; wer programmiert, will schlie&szlig;lich zielgerichtet arbeiten und nicht hier und da ein Zeichen einf&uuml;gen, bis das Dokument fertig gestellt ist.<\/p>\n<p>Au&szlig;erdem ist es bei der Programmierung von Word per VBA wichtig, sich das Word-Dokument nicht als Objekt mit Seiten und Zeilen vorzustellen &#8211; diese lassen sich n&auml;mlich per VBA ganz schlecht erfassen.<\/p>\n<p><IMG height=\"267\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Anzeigen eines frisch aufgezeichneten Makros im VBA-Editor unter Word<\/span><\/b><\/p>\n<h3>Bericht oder Word-Dokument<\/h3>\n<p>Und damit bekommt die Idee, statt eines Berichts ein Word-Dokument zur Ausgabe der in Tabellen gespeicherten Daten zu verwenden, einen herben R&uuml;ckschlag: Wenn man nicht wei&szlig;, wann eine neue Seite beginnt, wie soll man dann etwa eine Zeile mit einer Zwischensumme (beispielsweise einer Rechnung) zuverl&auml;ssig positionieren <\/p>\n<p>Sie sollten also sorgsam abw&auml;gen, ob Sie sich mit Word als &#8222;Report-Engine&#8220; aller Sorgen entledigen, die Sie m&ouml;glicherweise mit Access-Berichten haben. In vielen F&auml;llen l&auml;sst sich aus diesen n&auml;mlich weit mehr herausholen, als man erwartet.<\/p>\n<p>Die Formatierungsm&ouml;glichkeiten von Word sind nat&uuml;rlich unschlagbar; allerdings werden Sie den Inhalt einer Tabelle beim automatischen Export nicht mehr und nicht weniger formatieren k&ouml;nnen als in einem Bericht: Der Feldinhalt ist eben die kleinste Einheit, was die Formatierung angeht. <\/p>\n<p>Die einzige Alternative ist der Einsatz von RTF-Texten: Damit k&ouml;nnen Sie auch Teile des in einem Tabellenfeld enthaltenen Textes nach Wunsch formatieren. Dieses Thema behandeln wie in einer der n&auml;chsten Ausgaben.<\/p>\n<p>Wenn Sie einfach nur ein leeres Dokument mit den in einer Tabelle enthaltenen Daten f&uuml;llen m&ouml;chten, ben&ouml;tigen Sie kein Range-Objekt: Dann schreiben Sie einfach die Daten herunter &#8211; Feld f&uuml;r Feld, Datensatz f&uuml;r Datensatz.<\/p>\n<p><b>Text ohne Formatierung einf&uuml;gen<\/b><\/p>\n<p>Die Routine aus Quellcode 2 schreibt Namen und Positionen aller Mitarbeiter der Nordwind-Datenbank in ein neues Word-Dokument (siehe Bild 5).<\/p>\n<p>Dazu deklariert und instanziert es ein Recordset-Objekt mit den Datens&auml;tzen der Personal-Tabelle.<\/p>\n<p><IMG height=\"324\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic005.png\" width=\"375\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Ein per VBA-Code gef&uuml;lltes Word-Dokument<\/span><\/b><\/p>\n<p><b>Quellcode 2: Schreiben von Daten in ein leeres Word-Dokument<\/b><\/p>\n<pre>Public Sub PersonaldatenSchreiben()\r\n    Dim objWord As Word.Application\r\n    Dim objDocument As Word.Document\r\n    Dim db As DAO.Database\r\n    Dim rst As DAO.Recordset\r\n    Set db = CurrentDb\r\n    Set rst = db.OpenRecordset(\"Personal\", dbOpenDynaset)\r\n    On Error Resume Next\r\n    Set objWord = GetObject(, \"Word.Application\")\r\n    If Err.Number &gt; 0 Then\r\n        On Error GoTo 0        Set objWord = CreateObject(\"Word.Application\")\r\n    Else\r\n        objWord.Activate\r\n    End If\r\n    With objWord\r\n        .Visible = True\r\n        Set objDocument = .Documents.Add\r\n        Do While Not rst.EOF\r\n            .Selection.TypeText rst!Vorname & \" \" _                & rst!Nachname & \" (\" & rst!Position & \")\" _                & vbCrLf\r\n            rst.MoveNext\r\n        Loop\r\n        objDocument.SaveAs \"e:\\test.doc\"\r\n        objDocument.Close\r\n    End With\r\n    objWord.Quit\r\n    Set objWord = Nothing\r\nEnd Sub<\/pre>\n<p>Dieses durchl&auml;uft die Routine und schreibt dabei einige Informationen mit der TypeText-Methode des Selection-Objekts in die Word-Datei. Das Selection-Objekt entspricht dabei der Position der Einf&uuml;gemarke, die sich beim Verwenden der TypeText-Methode jeweils hinter den geschriebenen Text verschiebt.<\/p>\n<p><b>Text mit Formatierung einf&uuml;gen<\/b><\/p>\n<p>Wenn Sie die einzelnen Elemente (sprich: Felder der zugrunde liegenden Datenquelle) unterschiedlich formatieren m&ouml;chten, bietet sich der Einsatz des Range-Objekts an.<\/p>\n<p>Die Routine aus Quellcode 3 zeigt ein Beispiel. Es soll die gleiche Ausgabe wie die vorherige Prozedur erzeugen, aber die Mitarbeiternamen fett drucken und dazu das Range-Objekt verwenden.<\/p>\n<p>Das Range-Objekt wird zun&auml;chst auf den letzten Absatz gesetzt. Wenn der Absatz keinen Zeilenumbruch enth&auml;lt (Chr(13)), wird ein solcher zun&auml;chst am Ende eingef&uuml;gt und das Range-Objekt auf die neue, leere Zeile gesetzt.<\/p>\n<p>Die InsertAfter-Methode des Range-Objekts f&uuml;gt dann zun&auml;chst den Vor- und Nachnamen des Mitarbeiters in das Dokument ein. Dies erweitert das Range-Objekt entsprechend vom Anfang der neuen Zeile bis zum letzten Zeichen des eingef&uuml;gten Textes, sodass dieser leicht &uuml;ber rng.Font.Bold in fett gedruckten Text umgewandelt werden kann. Wenn man jetzt weiteren Text hinter dem aktuellen Text anf&uuml;gt, wird dieser ebenfalls fett hervorgehoben.<\/p>\n<p>Also verschieben Sie den Beginn des Range-Objekts auf das Ende des aktuellen Range-Objekts, aber vor das Zeilenumbruch-Zeichen (rng.End -1) und f&uuml;gen dort in Klammern die Position des aktuellen Mitarbeiters ein (rng.InsertAfter&#8230;). Dieser ist zwar immer noch fett gedruckt, aber Sie haben ja einen neuen Range festgelegt, der die Angabe der Position umfasst: Und diesen Bereich k&ouml;nnen Sie leicht mit rng.Font.Bold = False wieder auf normale Strichst&auml;rke einstellen. Das Ergebnis sieht diesmal wie in Bild 6 aus.<\/p>\n<p><IMG height=\"362\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic006.png\" width=\"379\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Automatisch generiertes Word-Dokument mit individueller Formatierung<\/span><\/b><\/p>\n<p><b>Quellcode 3: Einsatz des Range-Objekts zum Formatieren von Texten<\/b><\/p>\n<pre>Public Sub PersonaldatenSchreibenMitFormat()\r\n    ...    \r\n    Dim rng As Word.Range\r\n    ...\r\n    With objWord\r\n        .Visible = True\r\n        Set objDocument = .Documents.Add\r\n        Do While Not rst.EOF\r\n            Set rng = .ActiveDocument.Range.Paragraphs.Last.Range\r\n            If Not rng.Text = Chr(13) Then\r\n                .ActiveDocument.Range.InsertAfter Chr(13)\r\n                Set rng = .ActiveDocument.Range.Paragraphs.Last.Range\r\n            End If\r\n            rng.InsertAfter rst!Vorname & \" \" & rst!Nachname\r\n            rng.Font.Bold = True\r\n            Set rng = .ActiveDocument.Range(rng.End - 1, rng.End)\r\n            rng.InsertAfter \" (\" & rst!Position & \")\"\r\n            rng.Font.Bold = False\r\n            rst.MoveNext\r\n        Loop\r\n        objDocument.SaveAs \"e:\\test.doc\"\r\n        objDocument.Close\r\n    End With\r\n    ...\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4: Schreiben von Daten aus einer Access-Tabelle in eine Word-Tabelle<\/b><\/p>\n<pre>Public Sub PersonaldatenInTabelle()\r\n    ...\r\n    Dim cel As Word.Cell\r\n    Dim col As Word.Column\r\n    Dim tbl As Word.Table\r\n    ...\r\n    With objWord\r\n        .Visible = True\r\n        Set objDocument = .Documents.Add\r\n        Set rng = .Selection.Range\r\n        Do While Not rst.EOF\r\n            rng.InsertAfter rst!Vorname & vbTab & rst!Nachname & vbTab & rst!Position & vbCrLf\r\n            rst.MoveNext\r\n        Loop\r\n        Set tbl = rng.ConvertToTable(vbTab)\r\n        ''Tabelle formatieren\r\n        For Each col In tbl.Columns\r\n            For Each cel In col.Cells\r\n                cel.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle\r\n                cel.Borders(wdBorderRight).LineStyle = wdLineStyleSingle\r\n                cel.Borders(wdBorderTop).LineStyle = wdLineStyleSingle\r\n                cel.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle\r\n            Next cel\r\n        Next col\r\n        objDocument.SaveAs \"e:\\test.doc\"\r\n        objDocument.Close\r\n    End With\r\n    ...\r\nEnd Sub<\/pre>\n<p><b>Texte in Tabelle<\/b><\/p>\n<p>Vielleicht m&ouml;chten Sie auch &#8211; der besseren &uuml;bersicht halber &#8211; die Mitarbeiterdaten in eine Word-Tabelle schreiben.<\/p>\n<p>Das geht am allerschnellsten, wenn Sie die Daten einer Zeile erst einmal durch ein bestimmtes Steuerzeichen getrennt (etwa vbTab f&uuml;r Tabulator) in das Word-Dokument schreiben und dann den ganzen Bereich mit der Methode ConvertToTable in eine Tabelle konvertieren.<\/p>\n<p>Anschlie&szlig;end durchl&auml;uft die Routine aus Quellcode 4 die Tabelle in zwei For Each-Schleifen und f&uuml;gt jeder Zelle einen Rahmen hinzu.<\/p>\n<p>Die Tabelle sieht dann wie in Bild 7 aus.<\/p>\n<p><IMG height=\"277\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Aus der Tabelle in die Tabelle: Access-Daten in einer Word-Tabelle<\/span><\/b><\/p>\n<p>Das Verwenden einer Dokumentvorlage zum F&uuml;llen eines Word-Dokuments bringt mehrere Vorteile:<\/p>\n<li>Die gew&uuml;nschten Formatvorlagen k&ouml;nnen vorab definiert werden.<\/li>\n<li>Sie k&ouml;nnen Textmarken einf&uuml;gen, die als Platzhalter f&uuml;r die einzuf&uuml;genden Texte dienen.<\/li>\n<li>F&uuml;r gleichartige Dokumente ben&ouml;tigte Inhalte brauchen nur einmal festgelegt zu werden (etwa Briefkopf, Absenderadresse oder Text bei Serienbriefen).<\/li>\n<h3>Rund um die Textmarke<\/h3>\n<p>Aus Platzgr&uuml;nden verzichten wir an dieser Stelle auf die Beschreibung von Formatvorlagen und die Vorgehensweise zum Anlegen von Briefk&ouml;pfen oder Absenderadressen. Technisch viel interessanter sind die Textmarken.<\/p>\n<p>Zum besseren Verst&auml;ndnis legen Sie einfach einmal eine Dokumentvorlage mit einigen Textmarken an.<\/p>\n<p>Als Dokumentvorlage verwenden Sie zun&auml;chst ein herk&ouml;mmliches Dokument, das Sie sp&auml;ter als .dot-Datei speichern.<\/p>\n<p>Es gibt zwei Arten von Textmarken:<\/p>\n<li>Offene Textmarken markieren &#8211; wie die Einf&uuml;gemarke &#8211; eine Stelle, an der Inhalte eingef&uuml;gt werden k&ouml;nnen.<\/li>\n<li>Geschlossene Textmarken markieren einen Bereich, der als Platzhalter f&uuml;r den einzuf&uuml;genden Inhalt dient.<\/li>\n<p>Beide f&uuml;gen Sie ein, indem Sie den Men&uuml;befehl Einf&uuml;gen\/Textmarke ausw&auml;hlen, w&auml;hrend Sie entweder nur die Einf&uuml;gemarke an der gew&uuml;nschten Stelle positioniert (offene Textmarke) oder einen Bereich markiert haben (geschlossene Textmarke). Damit Sie &uuml;berhaupt sehen k&ouml;nnen, wo sich im Dokument die Textmarken befinden, aktivieren Sie die entsprechende Option im Optionen-Dialog von Word (Men&uuml;eintrag Extras\/Optionen). Bild 8 zeigt diesen Dialog und zwei Beispiele f&uuml;r eine offene und eine geschlossene Textmarke.<\/p>\n<p>Beim Einf&uuml;gen geben Sie jeder Textmarke einen eindeutigen Namen, &uuml;ber den Sie diese per VBA ansprechen k&ouml;nnen (im Beispiel &#8222;OffeneTextmarke&#8220; und &#8222;GeschlosseneTextmarke&#8220;).<\/p>\n<p>Die Routine aus Quellcode 5 legt ein neues Dokument auf Basis dieser Formatvorlage an, erstellt ein Range-Objekt, das zuerst auf die offene und dann auf die geschlossene Textmarke verweist und beiden nacheinander einen Text hinzuf&uuml;gt. Vorher pr&uuml;ft die Routine jeweils, ob die entsprechende Textmarke &uuml;berhaupt vorhanden ist.<\/p>\n<p><b>Quellcode 5: F&uuml;llen von Textmarken in einem Word-Dokument<\/b><\/p>\n<pre>Public Sub TextmarkenFuellen()\r\n    ...\r\n    With objWord\r\n        .Visible = True\r\n        Set objDocument = _            .Documents.Add(\"C:\\Dokumente und Einstellungen\\Administrator\\Anwendungsdaten\" _            & \"\\Microsoft\\Vorlagen\\Textmarken.dot\")\r\n        If objDocument.Bookmarks.Exists(\"OffeneTextmarke\") Then\r\n            Set rng = objDocument.Bookmarks(\"OffeneTextmarke\").Range\r\n            rng.Text = \"Hier war eine offene Textmarke ...\"\r\n        End If\r\n        If objDocument.Bookmarks.Exists(\"GeschlosseneTextmarke\") Then\r\n            Set rng = objDocument.Bookmarks(\"GeschlosseneTextmarke\").Range\r\n            rng.Text = \"... und hier eine geschlossene.\"\r\n        End If\r\n        objDocument.SaveAs \"e:\\test.doc\"\r\n        objDocument.Close\r\n    End With\r\n    ...\r\nEnd Sub<\/pre>\n<p><IMG height=\"352\" src=\"..\/fileadmin\/_temp_\/{3A88CFAC-51DE-4D7B-84CB-6449D31FAB2E}\/pic008.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Option f&uuml;r das Sichtbarmachen von Textmarken und Beispiele f&uuml;r eine offene und eine geschlossene Textmarke<\/span><\/b><\/p>\n<p>Wenn Sie automatisiert Artikelbeschreibungen oder Produktdatenbl&auml;tter in Word-Dokumente schreiben m&ouml;chten, wollen Sie dort auch &#8211; soweit vorhanden &#8211; passende Bilddateien integrieren.<\/p>\n<p>Abh&auml;ngig davon, ob und in welchem Format die Bilder in der Datenbank oder im Dateisystem gespeichert sind, gibt es nat&uuml;rlich unterschiedliche M&ouml;glichkeiten, an die entsprechenden Bilder zu kommen. Daher geht die folgende Routine davon aus, dass das Bild im Dateisystem verf&uuml;gbar ist. Es gibt zwei Arten, ein Bild in ein Word-Dokument einzubetten:<\/p>\n<li>Die Einbettung im Textfluss, also etwa zwischen zwei Zeichen oder als eigener Absatz, erfolgt in Form eines InlineShapes. Die Gr&ouml;&szlig;e und Position eines InlineShapes k&ouml;nnen Sie mit der Maus ver&auml;ndern, wobei Sie es genau &uuml;berall dort positionieren k&ouml;nnen, wo sich auch die Einf&uuml;gemarke platzieren l&auml;sst.<\/li>\n<li>Die Einbettung in den Flie&szlig;text (etwa, um diesen um das Bild herumlaufen zu lassen oder das Bild vor oder hinter dem Text darzustellen) erfolgt in Form eines Shape-Objekts. Auch die Gr&ouml;&szlig;e und Position von Shape-Objekten k&ouml;nnen Sie mit der Maus anpassen. Bez&uuml;glich der Position haben Sie allerdings wesentlich mehr Spielraum als mit einem InlineShape: Sie k&ouml;nnen es ann&auml;hernd stufenlos verschieben.<\/li>\n<p>Die Routine aus Quellcode 6 zeigt, wie Sie ein Shape in ein Word-Dokument einf&uuml;gen. Es gibt ein paar Unterschiede zum Einf&uuml;gen eines InlineShape-Objekts, das in Quellcode 7 dargestellt ist: So k&ouml;nnen Sie beim Shape-Objekt direkt beim Einf&uuml;gen die Gr&ouml;&szlig;e des Bildes festlegen. Die vorliegende Routine verwendet die Methoden des Moduls mdlGDIPlus (siehe Beitrag Bilder im Griff mit VBA und GDI+, Shortlink 337), um die Gr&ouml;&szlig;e des einzuf&uuml;genden Bildes zu ermitteln.<\/p>\n<p><b>Quellcode 6: Einf&uuml;gen eines Bildes als Shape<\/b><\/p>\n<pre>Public Sub BildEinfuegen_Shape()\r\n    ...\r\n    Dim shp As Word.Shape\r\n    Dim rng As Word.Range\r\n    Dim strBildname As String\r\n    Dim x As Integer\r\n    Dim y As Integer\r\n    ...\r\n    With objWord\r\n        .Visible = True\r\n        Set objDocument = .Documents.Add\r\n        strBildname = CurrentProject.Path & \"\\pic001.tif\"\r\n        BildabmessungenLesen strBildname, x, y\r\n        Set shp = objDocument.Shapes.AddPicture(strBildname, _            True, False, , , x, y)\r\n        shp.ScaleHeight 0.6, msoTrue\r\n        shp.ScaleWidth 0.6, msoTrue\r\n        objDocument.SaveAs \"e:\\test.doc\"\r\n        objDocument.Close\r\n    End With\r\n    ...\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7: Einf&uuml;gen eines Bildes als InlineShape<\/b><\/p>\n<pre>Public Sub BildEinfuegen_InlineShape()\r\n    ...\r\n    Dim ils As Word.InlineShape\r\n    Dim rng As Word.Range\r\n    Dim strBildname As String\r\n    Dim x As Integer\r\n    Dim y As Integer\r\n    ...\r\n    With objWord\r\n        .Visible = True\r\n        Set objDocument = .Documents.Add\r\n        strBildname = CurrentProject.Path & \"\\pic001.tif\"\r\n        Set ils = _            objDocument.InlineShapes.AddPicture(strBildname, _            True, False)\r\n        ils.ScaleHeight = 60\r\n        ils.ScaleWidth = 60\r\n        objDocument.SaveAs \"e:\\test.doc\"\r\n        objDocument.Close\r\n    End With\r\n    ...\r\nEnd Sub<\/pre>\n<p>Alternativ &#8211; in dieser Prozedur zus&auml;tzlich implementiert &#8211; passen Sie die Gr&ouml;&szlig;e mit den Methoden ScaleWidth und ScaleHeight an. Die Routine BildEinfuegen_InlineShape (s. Quellcode 7) f&uuml;gt das gleiche Bild als InlineShape-Objekt in das Dokument ein.<\/p>\n<p>In Ermangelung einer M&ouml;glichkeit, beim Einf&uuml;gen die Gr&ouml;&szlig;e des Bildes einzustellen, erfolgt dies direkt im Anschluss mit den Eigenschaften ScaleHeight und ScaleWidth.<\/p>\n<p>Dieser Beitrag stellt einige M&ouml;glichkeiten zum Einf&uuml;gen von Daten in Word-Dokumente per VBA vor. Zus&auml;tzlich erfahren Sie noch, wie Sie die passenden Bilder hinzuf&uuml;gen.<\/p>\n<p>Damit beherrschen Sie die Grundlagen f&uuml;r das Erstellen von Word-Dokumenten auf Basis von Access-Daten.<\/p>\n<p>Der Beitrag konnte nat&uuml;rlich nur an der Oberfl&auml;che kratzen; das Objektmodell von Word steht den VBA-Bibliotheken von Access bezogen auf den Umfang keinesfalls nach und der Aufbau eines Word-Dokuments sowie der Zugriff darauf wollen erst einmal beherrscht sein.<\/p>\n<p>Eine gro&szlig;e Hilfe beim Ermitteln der notwendigen Code-Schnipsel zum Anpassen der oben vorgestellten Routinen an eigene Bed&uuml;rfnisse ist die Funktion zum Aufzeichnen von Makros in Word.<\/p>\n<p>Wer zus&auml;tzlich das Objektmodell von Word verstehen will, sollte auf jeden Fall einen Blick auf die im Internet verf&uuml;gbare Word-FAQ von Ren&eacute; Probst werfen:  http:\/\/mypage.bluewin.ch\/reprobst\/FrmSet.htmIndex<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>AccessToWord.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/10F1E517-A4C6-43CA-A63F-83FF09C9B23C\/aiu_360.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8222;Von Access nach Word&#8220; &#8211; da kommt doch nicht zum x-ten Male diese (zugegebenerma&szlig;en oft gefragte) Serienbrief-Geschichte Jein. Serienbriefe hat Access im Unternehmen (eigentlich) schon ausreichend behandelt. Welche Gr&uuml;nde soll es noch geben, Word zur Ausgabe von Access-Daten zu nutzen Diese und die Frage nach der Umsetzung beantwortet der vorliegende Beitrag. Dabei erfahren Sie unter anderem, wie Sie Word starten und beenden, Dokumente und Bereiche referenzieren und diese mit den gew&uuml;nschten Daten aus einer Access-Datenbank f&uuml;llen.<\/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":[662006,66032006,44000034,44000031],"tags":[],"class_list":["post-55000360","post","type-post","status-publish","format-standard","hentry","category-662006","category-66032006","category-ImportExport","category-Word"],"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>Von Access nach Word - 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\/Von_Access_nach_Word\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Von Access nach Word\" \/>\n<meta property=\"og:description\" content=\"&quot;Von Access nach Word&quot; - da kommt doch nicht zum x-ten Male diese (zugegebenerma&szlig;en oft gefragte) Serienbrief-Geschichte Jein. Serienbriefe hat Access im Unternehmen (eigentlich) schon ausreichend behandelt. Welche Gr&uuml;nde soll es noch geben, Word zur Ausgabe von Access-Daten zu nutzen Diese und die Frage nach der Umsetzung beantwortet der vorliegende Beitrag. Dabei erfahren Sie unter anderem, wie Sie Word starten und beenden, Dokumente und Bereiche referenzieren und diese mit den gew&uuml;nschten Daten aus einer Access-Datenbank f&uuml;llen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T20:53:51+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0\" \/>\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=\"20\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Von Access nach Word\",\"datePublished\":\"2021-02-11T20:53:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/\"},\"wordCount\":3382,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/048293a91fc9477aafb62c7ae7d3f3e0\",\"articleSection\":[\"2006\",\"3\\\/2006\",\"Import\\\/Export\",\"Word\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/\",\"name\":\"Von Access nach Word - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/048293a91fc9477aafb62c7ae7d3f3e0\",\"datePublished\":\"2021-02-11T20:53:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/048293a91fc9477aafb62c7ae7d3f3e0\",\"contentUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/048293a91fc9477aafb62c7ae7d3f3e0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Von_Access_nach_Word\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Von Access nach Word\"}]},{\"@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":"Von Access nach Word - 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\/Von_Access_nach_Word\/","og_locale":"de_DE","og_type":"article","og_title":"Von Access nach Word","og_description":"\"Von Access nach Word\" - da kommt doch nicht zum x-ten Male diese (zugegebenerma&szlig;en oft gefragte) Serienbrief-Geschichte Jein. Serienbriefe hat Access im Unternehmen (eigentlich) schon ausreichend behandelt. Welche Gr&uuml;nde soll es noch geben, Word zur Ausgabe von Access-Daten zu nutzen Diese und die Frage nach der Umsetzung beantwortet der vorliegende Beitrag. Dabei erfahren Sie unter anderem, wie Sie Word starten und beenden, Dokumente und Bereiche referenzieren und diese mit den gew&uuml;nschten Daten aus einer Access-Datenbank f&uuml;llen.","og_url":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T20:53:51+00:00","og_image":[{"url":"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"20\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Von Access nach Word","datePublished":"2021-02-11T20:53:51+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/"},"wordCount":3382,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0","articleSection":["2006","3\/2006","Import\/Export","Word"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/","url":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/","name":"Von Access nach Word - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0","datePublished":"2021-02-11T20:53:51+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#primaryimage","url":"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0","contentUrl":"http:\/\/vg03.met.vgwort.de\/na\/048293a91fc9477aafb62c7ae7d3f3e0"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Von_Access_nach_Word\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Von Access nach Word"}]},{"@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\/55000360","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=55000360"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000360\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}