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.
|
|
|
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
|
|
|
|
|
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)
|
|
|
|
|
|
Im Download befindet sich auch ein Excel/VBA-Beispiel.
|
|
|
Um diesen Tipp ausführen zu können, muss die Microsoft Word x.0 Object Library
in das VB-/VBA-Projekt eingebunden werden.
|
|