... hatte viel zu tun - hier nun Code-Schnipsel zu MS-WORD-OLE
' Konstanten für Word zur Absatzformatierung
Const wdAlignParagraphLeft = 0
Const wdAlignParagraphCenter = 1
Const wdAlignParagraphRight = 2
' # weitere Konstanten findest du in der Konstanten-DB in der Sandbox...
... Word als Objekt initialisieren
Dim wordDocObject As Variant
Dim wordAppObject As Variant ' = wordApplicationObject
Dim WordDoc As Variant ' Dokumentvariable für Handling' Instanz zur Klärung, ob Word bereits geöffnet ist
Dim TemplatePath As String
Set wordAppObject = Nothing
On Error Resume Next
Set wordAppObject = GetObject("","Word.Application")
If wordAppObject Is Nothing Then Set wordAppObject = CreateObject("Word.Application")
' Zuweisung des Standartpfades für Vorlagen
TemplatePath = wordAppObject.Options.DefaultFilePath(3)
' Wordfenster
wordAppObject.Visible = True ' # Erstellung vollzieht sich im Frontend - False = nur im Backend
' Öffnen eines neuen Word-File anhand der Standardvorlage und Zuweisung in Variable WordDoc für Handling
Call wordAppObject.Documents.Add(TemplatePath) 'TemplatePath+WordVorlage
Set WordDoc = wordAppObject.ActiveDocument
... Eine Überschrift mit bestimmter Formatierung einfügen:
' Absatz mit der Überschrift einfügen
WordDoc.Paragraphs.Add
Set wordParagraphObject = WordDoc.Paragraphs(1)
With wordParagraphObject
.Range.Font.Size = 24
.Range.Font.Bold = True
.Range.Font.Name = "Arial"
.Range.font.ColorIndex = 2 ' Blau
.Range.Text = "Deine Überschrift ' Überschrift
.Alignment = wdAlignParagraphLeft
.SpaceAfter = 20 ' ... bestimmt den Zeilenabstand
End With
... eine Tabelle erstellen mit 3 Spalten und einer Zeile
WordDoc.Paragraphs.Add
Set wordParagraphObject = WordDoc.Paragraphs(2)
With wordParagraphObject
.Range.Font.Size = 10
.Range.Font.Bold = False
.SpaceAfter = 3
End With
Set wordRangeObject = wordParagraphObject.Range
Set wordTableObject = WordDoc.Tables.Add(wordRangeObject, 1, 3) ' 1 entspricht Zeilen, 3 entspricht Spalten
' Deaktivieren der Zelenumrandung
With WordDoc.Tables(1).Borders
.InsideLineStyle = wdLineStyleNone
.OutsideLineStyle= wdLineStyleNone
End With
' Neue Zeile in die Tabelle aufnehmen
wordDoc.Tables(1).Rows.Add
... einer Zelle Werte zuweisen
Set wordCellObject = WordDoc.Tables(1).Cell(1,1) ' # Cell( Zeile , Spalte )
wordCellObject.Column.Width = 125 ' # Breite
Set wordParagraphObject = WordDoc.Paragraphs.Add (wordCellObject.Range)
With wordParagraphObject
.Range.Font.Size = Size
.Range.Font.Name = "Arial"
.Range.Font.Bold = True
.Range.Text = "Das ist der Text, der eingefügt werden soll"
.Alignment = wdAlignLeft
End With
... speichern, ausdrucken und beenden der Word-Instanz
' ### Dokument speichern, Referenz- Instanzenzähler zurücksetzen ######
Pfad = "C:\Temp\Deine_Datei.doc"
Call WordDoc.ActiveWindow.Document.SaveAs(Pfad)
' Ausdruck des Dokumentes
' Call WordDoc.ActiveWindow.Document.PrintOut
Call WordDoc.ActiveWindow.Document.Close
Set wordAppObject = Nothing
Set WordDoc = Nothing
... bleibt noch zu bemerken - das sind Schnipsel - die Ojekte sind nicht ordentlich dimensioniert - der eigentliche Code muß entsprechend strukturiert erstellt werden...
... ich verwende auch Konstanten aus Word - die müssen noch entsprechend deklariert werden...
... ich hoffe das hilft schon mal ein bißchen...
ata