Tipp 0443 Word-Dokument erstellen/öffnen und drucken
Autor/Einsender:
Datum:
  Angie
17.03.2005
Entwicklungsumgebung:   VB 6/VBA 6
Je nach Anwendungsfall wird bei der Automation von Word normalerweise ein neues Dokument auf Basis der Dokumentvorlage Normal (normal.dot) oder einer beliebigen anderen vorhandenen Dokumentvorlage (*.dot) erstellt, oder ein bereits bestehendes Dokument (*.doc) zur Bearbeitung geöffnet.
Das Erstellen eines Word-Dokuments per Automation kann für den Anwender "unsichtbar" durchgeführt werden, dies ist jedoch nur dann möglich, wenn bei der Programmierung sowohl auf die Verwendung des Selection-Objekts als auch auf die Activate-Methode verzichtet wird, was eh bei der Automation von (Office-)Anwendungen zu empfehlen ist. Bei länger dauernden Aktionen ist es aber in dem Fall sinnvoll, dem Anwender beispielsweise eine "Bitte warten..."-Mitteilung anzuzeigen.
Anmerkung
Meines Erachtens ist es nicht sehr sinnvoll, ein neues Dokument auf Basis der Dokumentvorlage Normal (normal.dot) zu erstellen, da hier ein erheblicher Programmieraufwand nötig wäre, wenn das neu erstellte Dokument bei jedem Anwender gleich aussehen soll. In Firmen ist es zwar durchaus üblich, dass alle Anwender die selbe ggf. angepasste und schreibgeschützte normal.dot verwenden, ganz anders sieht es jedoch beim "normalen" Anwender aus, da dieser die Dokumentvorlage Normal durchaus seinen eigenen Vorstellungen angepasst haben könnte. Das heißt also, man müsste das Seitenlayout, die benötigten Formatvorlagen, wie z. B. Standard, Kopf- und Fusszeile, und vieles mehr per Code anpassen.
Dokument auf Basis der Dokumentvorlage Normal (normal.dot) erstellen
In folgendem Beispiel wird nach der Erstellung einer neuen Word-Instanz mit der Add-Methode ein neues Dokument auf Basis der Dokumentvorlage Normal (normal.dot) erstellt, dem Dokument Text zugewiesen, das Dokument ausgedruckt und ohne zu speichern geschlossen, und anschließend die vom Programm erstellte Word-Instanz wieder beendet. Hier wird auf jegliche Formatierung des Dokuments verzichtet, siehe dazu obige Anmerkung.
Die Add-Methode gibt ein Document-Objekt zurück, das ein neues, "leeres" Dokument repräsentiert, das der Auflistung der geöffneten Dokumente hinzugefügt wird.
Code im Codebereich des Moduls
 
Option Explicit

Public Function CreateAndPrintDoc(ByRef sMsg As String) As Boolean
  Dim objWDApp     As Word.Application
  Dim objWDDoc     As Word.Document

  Dim blnDocPrint  As Boolean

  On Error Resume Next

  Set objWDApp = New Word.Application
  If Err.Number = 0 Then
    Set objWDDoc = objWDApp.Documents.Add
    If Err.Number = 0 Then
      With objWDDoc
        .Range.Text = "Hallihallo..." & vbCrLf & _
              "Dieses Dokument wurde per Automation erstellt!"

        With .Sections(1)
          .Headers(wdHeaderFooterPrimary).Range.Text = _
                "VB-fun-Demo"

          .Footers(wdHeaderFooterPrimary).Range.Text = _
                "Erstellt am " & Format$(Now, "Long Date")
        End With

        Err.Clear
        .PrintOut Background:=False
        If Err.Number <> 0 Then sMsg = Err.Description

        .Close SaveChanges:=wdDoNotSaveChanges
      End With
      Set objWDDoc = Nothing

      If Len(sMsg) = 0 Then
          blnDocPrint = True
          sMsg = "Das Word-Dokument wurde erstellt und gedruckt!"
      End If
    Else
      sMsg = Err.Description
    End If

    objWDApp.Quit
    Set objWDApp = Nothing

  Else
    sMsg = Err.Description
  End If
  On Error GoTo 0

  CreateAndPrintDoc = blnDocPrint
End Function
 
Beispiel-Aufruf
 
Private Const mc_MsgDefault As String = _
       "VB-fun-Demo - Word-Dokument erstellen und drucken"

Private Sub cmdWordDocPrint_Click()
  Dim strMsg As String

  If CreateAndPrintDoc(strMsg) Then
    MsgBox strMsg, vbOKOnly + vbInformation, mc_MsgDefault
  Else
    MsgBox strMsg, vbOKOnly + vbCritical, mc_MsgDefault
  End If
End Sub
 
Dokument auf Basis einer vorgegebenen Dokumentvorlage (*.dot) erstellen
Um ein neues Dokument auf Basis einer angegebenen Dokumentvorlage (*.dot) erstellen zu können, muss beim Aufruf der Add-Methode
 
  Set objWDDoc = objWDApp.Documents.Add
 
der Name der Dokumentvorlage beim Argument Template angegeben werden. Wenn dieses Argument fehlt, wird wie in obigem Beispiel die Dokumentvorlage Normal (normal.dot) verwendet.
 
  Dim strTemplate As String
  strTemplate = "c:\temp\beispiel.dot"

  Set objWDDoc = objWDApp.Documents.Add(Template:=strTemplate)
 
Bestehendes Dokument (*.doc) zur Bearbeitung öffnen
Die Open-Methode des Documents-Objekts öffnet das angegebene Dokument und fügt es der Documents-Auflistung hinzu. Um ein bestehendes Dokument zu öffnen, muss lediglich in obigem Code die Zeile, mit der ein neues Dokument auf Basis einer Dokumentvorlage erstellt wird (Add-Methode), mit den folgenden Codezeilen ersetzt werden.
 
  Dim strFileName As String
  strFileName = "c:\temp\beispiel.doc"

  Set objWDDoc = objWDApp.Documents.Open(FileName:=strFileName)
 
Weitere Links zum Thema
Automation mit Office-Anwendungen
Texte an Word-Textmarken übergeben
Word-Anwendung starten und beenden
Word-Automatisierungsfehler vermeiden
Hinweis für VBA-Anwender
Im Download befindet sich auch ein Excel/VBA-Beispiel.
Hinweis
Um diesen Tipp ausführen zu können, muss die Microsoft Word x.0 Object Library in das VB-/VBA-Projekt eingebunden werden.

Windows-Version
95
98
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (19,4 kB) Downloads bisher: [ 1867 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 19. Mai 2011