Microsoft Excel

Herbers Excel/VBA-Archiv

Excel nach Word | Herbers Excel-Forum


Betrifft: Excel nach Word von: Hendryk
Geschrieben am: 25.02.2010 09:29:18

Hallo Excel Freunde,

ich versuch jämmerlich aus Excel heraus ein Word Dokument per VBA zu erstellen, das funktioniert auch soweit. Jedoch scheitere ich beim Versuch die Kopfzeile in Word zu kreieren. Weiß jemand Rat?

Vielen Dank und Viele Grüße aus Bonn

Hendryk

Hier noch mein bisheriger Code:

Sub ExcelnachWord()

Dim WordObj As Object
Dim Worddoc As Object
Dim Kopfzeile As Object
Dim i As Integer

On Error Resume Next
Set WordObj = GetObject(, "Word.Application.11")
If Err.Number = 429 Then
    Set WordObj = CreateObject("Word.application.11")
    Err.Number = 0
End If
WordObj.Visible = True
      
Set Worddoc = WordObj.Documents.Add

    With WordObj.Selection
            Set Kopfzeile = WordObj.Sections(1).Headers(wdHeaderFooterPrimary).Range
                Kopfzeile.Text = "Hallo Welt"
        .TypeText Text:="Hallo" & vbCrLf
        .TypeParagraph
        .TypeText Text:="Hallo_1" & vbCrLf
    End With

End Sub

  

Betrifft: AW: Excel nach Word von: xr8k2
Geschrieben am: 25.02.2010 10:13:02

Hallo Hendryk,

du musst entweder in deiner Mappe einen Verweis auf die Microsoft Word Bibliothek setzen oder du gibst den .Headers Parameter numerisch an:

Set Kopfzeile = WordObj.Sections(1).Headers(1).Range

Gruß,
xr8k2


  

Betrifft: AW: Excel nach Word von: Hendryk
Geschrieben am: 25.02.2010 10:38:01

Hallo xr8k2,

irgendwie funktioniert es nicht, die Kopfzeile bleibt in Word leer :(
Den Verweis auf die Word Bibliothek habe ich gesetzt und die zweite Variante habe ich auch ausprobiert.
Leider beides ohne Erfolg.

Gruß,
hendryk


  

Betrifft: AW: Excel nach Word von: xr8k2
Geschrieben am: 25.02.2010 10:50:55

Hallo Hendryk,

habs jetzt grad doch mal ausprobiert ... du hast das falsche Objekt für die Kopfzeile angegeben

so müsste es gehen:

           Set Kopfzeile = Worddoc.Sections(1).Headers(1).Range
Gruß,
xr8k2

PS: So ein Error Resume Next bewirkt eben auch manchmal das man ungewollte Fehler nicht mehr entdeckt ;-)


  

Betrifft: AW: Excel nach Word von: Hendryk
Geschrieben am: 25.02.2010 10:57:56

Ahh super, ich bin begeistert, vielen lieben Dank.

Grüße
Hendryk


  

Betrifft: AW: Excel nach Word-Kopftext von: fcs
Geschrieben am: 25.02.2010 11:19:15

Hallo Hendryk,

auch unter Excel sollte man die Objekte des Worddokuments als das deklarieren was sie sind und nicht "nur" as Object deklarieren. Man tut sich dann ggf. etwas leichter mit der Syntax der VBA-Prozeduren.

Gruß
Franz

Das folgende Beispiel baut den Kopftext aus mehreren Teilen zusammen inkl. Feldern für Seitennummerierung.

Sub ExcelnachWord()
'Verweis auf Microsoft Word x.y Object Library muss gesetzt sein
    Dim WordObj As Object
    Dim Worddoc As Word.Document
    Dim Kopfzeile As Word.HeaderFooter
    Dim wdRange As Word.Range
    Dim i As Integer
    
    On Error Resume Next
    Set WordObj = GetObject(, "Word.Application.11")
    If Err.Number = 429 Then
        Set WordObj = CreateObject("Word.application.11")
        Err.Number = 0
    End If
    WordObj.Visible = True
      
    Set Worddoc = WordObj.Documents.Add
    Set Kopfzeile = Worddoc.Sections(1).Headers(wdHeaderFooterPrimary)
    Kopfzeile.Range.Text = "Hallo Welt" & vbTab & vbTab & "Seite "
    Set wdRange = Kopfzeile.Range.Characters(Len(Kopfzeile.Range.Text))

    wdRange.Fields.Add Range:=wdRange, Type:=wdFieldEmpty, Text:= _
      "PAGE  \* Arabic ", PreserveFormatting:=True
    Set wdRange = Kopfzeile.Range.Characters(Len(Kopfzeile.Range.Text))
    wdRange.Text = " von "
    Set wdRange = Kopfzeile.Range.Characters(Len(Kopfzeile.Range.Text))
    wdRange.Fields.Add Range:=wdRange, Type:=wdFieldEmpty, Text:= _
      "NUMPAGES  \* Arabic ", PreserveFormatting:=True
End Sub