Makro für Excel Export zu Word

Bild

Betrifft: Makro für Excel Export zu Word
von: phelix
Geschrieben am: 10.11.2015 15:39:15

Hallo,
ich bin absoluter Anfänger und komme mit meinem Makro nicht klar.
Ich habe folgendes Makro:

Sub NachWordKopieren()
 Dim wd As Object
    Range("A45:h60").Copy
    Set wd = CreateObject("word.application")
    wd.documents.Add
    wd.Visible = True
    wd.activedocument.Range.Paste
 End Sub

Mit diesem Makro möchte ich aus einer Excel-Datei eine Tabelle nach Word exportieren. Das klappt soweit mit dem Makro auch ganz gut, aber ich benötige da noch einige Adaptionen.
Zunächst einmal soll die Word-Datei im Format Din A3 und Querformat sein, damit auch alle Infos zu sehen sind. Wie kriege ich das hin?
Zweitens: Ich möchte nur die Spalten A bis H exportieren, was mit meinem Makro hervorragend klappt. Es sollen aber nur die Spalten exportiert werden in denen kein Eintrag in Spalte H (Datum Ausgang) steht. Außerdem soll immer der Tabellenkopf exportiert werden (Zeile 45). Ist es möglich, das beim Export immer Zeile 45 und die Zeilen ab Zeile 45 exportiert werden, die keinen Eintrag in Spalte H haben?
Die Tabelle wächst täglich weiter, das heißt das Ganze ist sehr dynamisch. Es wäre schon, wenn ein Makro mir diesen Export ermöglicht. Noch besser wäre es eigentlich, wenn das Ganze in eine Word-Vorlage exportiert wird, in der ich eine feste Kopf- und Fußzeile habe, damit ich diese nicht immer einpflegen muss.
Hier mein Excel File https://www.herber.de/bbs/user/101389.xlsm
Vielen Dank für eure Hilfe :)
Gruß
Phelix

Bild

Betrifft: AW: Makro für Excel Export zu Word
von: Michael (migre)
Geschrieben am: 11.11.2015 09:58:44
Hallo Phelix!
Hier mal eine Möglichkeit mit einer Word-Vorlage - das ist insofern viel einfacher, weil Du Dir da manuell und ohne VBA-Spielerei Dein Dokument einmal einrichtest (Kopf- und Fußzeilen, Größe A3... ) und der verbleibende Code in Excel bleibt sehr überschaubar:

Sub TableToWordTemplate()
'Verweis auf MS Word 14 Object Library
    Dim rStartZelle As Range: Set rStartZelle = Range("A45")
    Dim oWord As Object
    
    Set oWord = CreateObject("Word.Application")
    
    'Autofilter Deiner Tabelle setzen (Leere Werte in H)
    
    If ActiveSheet.FilterMode = True Then rStartZelle.AutoFilter
    rStartZelle.AutoFilter Field:=8, Criteria1:="="
    
    'Gesamten sichtbaren Tabellenbereich (nach Autofilter) kopieren
    rStartZelle.CurrentRegion.Copy
    
    'Word-Vorlage öffnen
    With oWord
        .Documents.Add Template:="C:\...\Deine_Vorlage.dot"
        .Visible = True
    End With
    
    'Kopierten Bereich einfügen
    oWord.activedocument.Range.PasteExcelTable False, True, False
    oWord.activedocument.Activate
    
End Sub
Den Pfad der Vorlage musst Du dann natürlich entsprechend anpassen. Im Code sind ein paar erklärende Hinweise. Den Verweis auf die MS Word Object Library 14 setzt Du so: Füge den o.a. Code in ein allgemeines Modul ein und klicke Dich dann im VB-Editor wie folgt durch... Extras -- Verweise -- Häkchen setzen bei "Microsoft Word 14.0 Object Library".
Kommst Du so damit zurecht?
LG
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro für Excel Export zu Word"