Zum Inhalt springen

Mit VBA Kopf- und Fußzeile aus anderem Dokument, in derzeitiges zu bearbeitendes Dokument


Ainopie

Empfohlene Beiträge

Hallo Ihr Lieben,

ich tüftle nun seit Tagen an folgendem Problem:

Ich möchte gerne ein Makro in meinem Word anlegen, der mir aus einer bestimmten Mustervorlage die Kopf- und Fußzeile (erste Seite anders) exakt so in den jeweiligen offenen Dokument, dass ich gerade bearbeite, einfügt (sind immer verschiedene neue Dokumente, in dem diese K&F-Zeilen eingefügt werden sollen).

Ich habe schon einiges probiert. Manchmal klappt nur die Fußzeile zu kopieren, dann findet er manchmal die Quellen nicht mehr... Ich bin völlig verzweifelt...
 


Sub Makro1()
'
' Makro1 Makro
'
'
    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
        
        Set DocAlt = ActiveDocument

Set DocNeu = Documents.Open("C:\Quelle_Dokument_Kopf_Fuss.docx")
ActiveWindow.View.SeekView = wdSeekCurrentPageHeader

    End If
    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    Selection.WholeStory
    Selection.Copy
 
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Selection.TypeBackspace
   Selection.WholeStory
    Selection.Copy
    Selection.Copy
  
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Selection.TypeBackspace
    
    ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Selection.WholeStory
    Selection.Copy
 
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Selection.TypeBackspace
   Selection.WholeStory
    Selection.Copy
    Selection.Copy
  
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Selection.TypeBackspace
    
End Sub

Ich würde mich so, so, so, so, so, so, so sehr über Hilfe freuen, wenn jemand eine Idee hat, wie man dieses Makro funktionstüchtig macht...

Schon mal vielen Dank und liebe Grüße

M.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab ich versucht, doch  wird die Formatierung leider nicht immer 100 % korrekt übernommen (was das größere Problem ist...)
und der Dateiname muss dann immer neu abgeändert werden.

Die K&F-Zeilen sollen in schon bestehenden Dokumenten eingefügt werden - das sind immer so 20-30 am Stück und da darf auf keinen Fall die Formatierung verhagelt werden.

Wenn ich nun einen brauchbares Tool hätte / oder halt Makro, dann wäre es klasse, wenn man in dem jeweiligen Dokument nur ein "Klick" auf eine Schaltfläche und / oder Tastenkürzel machen könnte und Fuß- und Kopfzeile sind  drin - OneDrive speichert es automatisch, schließen, fertig... So meine Idee... 🤭

Aber wenn es nur mit einer Vorlage klappen könnte... dann muss das wohl sein. 😰 Ich dachte, es wäre über ein Makro irgendwie doch möglich. 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 11 Stunden schrieb Ainopie:

Hab ich versucht, doch  wird die Formatierung leider nicht immer 100 % korrekt übernommen (was das größere Problem ist...)

Was soll denn dabei nicht korrekt übernommen werden? Vorlagen sind nichts weiter als Word-Dateien.

vor 11 Stunden schrieb Ainopie:

und der Dateiname muss dann immer neu abgeändert werden.

Vorlage öffnen. Datei -> Speichern unter. Wo ist das Problem?

Und ganz ehrlich: Bei 20 - 30 Dateien würde ich einmal kurz in den sauren Apfel beißen und überall händisch die Kopf- und Fußzeilen reinkopieren, als mir da tagelang ein Makro zu bauen. Wie lange braucht man dafür? Ein, maximal zwei Stunden. Dann ist das Thema doch durch. Für neue Dateien würde ich dann eine Vorlage bereitstellen. Die könnte man dann sogar unternehmensweit bereitstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich das richtig verstehe, kommen immer wieder 20-30 Dateien rein, welche mit diesen Kopf- & Fußzeilen versehen werden sollen.

 

Ist es wichtig, dass die Dateien weiterhin als .doc(x) vorliegen oder könnten sie auch zu PDF konvertiert werden?

Wieso werden die Dateien nicht gleich mit diesen Kopf- und Fußzeilen erfasst?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ach, da steht das Wort "immer". 😅 Dann nehme ich zurück, was ich vorhin geschrieben habe.

Ja, dann würde ich mir auch die Frage stellen, wieso die Dateien ohne Kopf- und Fußzeile erzeugt werden und ggf. da ansetzen.

Wenn du unbedingt ein Makro schreiben willst, dann würde ich nicht mit dem Windowhandle arbeiten, sondern direkt mit den Dokumenten. Der Witz an den Kopf- und Fußzeilen ist, dass sie aus drei Bereichen bestehen: Links, Mitte, Rechts.

Ich hab mir aus Spaß nun eine *.docm (Word-Dokument mit Makro) erzeugt und in dieser Datei die Kopf- und Zeilen definiert, die ich brauche. Das Makro sieht dann so aus:

Sub CopyHeaderFooter()
    Dim docSource As Document
    Dim docTarget As Document
    
    strTargetFileName = "C:\_Daten\Temp\Dok2.docx"

    Set docSource = ActiveDocument
    Set docTarget = Documents.Open(strTargetFileName)
    
    For i = 1 To docSource.Sections(1).Headers.Count
        docSource.Sections(1).Headers(i).Range.Copy
        For j = 1 To docTarget.Sections.Count
            docTarget.Sections(j).Headers(i).Range.Paste
        Next j
    Next i
    
    For i = 1 To docSource.Sections(1).Footers.Count
        docSource.Sections(1).Footers(i).Range.Copy
        For j = 1 To docTarget.Sections.Count
            docTarget.Sections(j).Footers(i).Range.Paste
        Next j
    Next i
    
    docTarget.Close wdSaveChanges
End Sub

Das lässt sich mit Sicherheit noch optimieren oder nach deinen Bedürfnissen anpassen aber es ist ein Anfang.

Ich öffne halt mittels Documents.Open() die Datei, wo ich die Kopf- und Fußzeilen reinkopiert haben möchte (in meinem Fall die Do2.docx). Durchlaufe dann alle Bereiche der Kopf- und Fußzeilen der ersten Seite im aktuellen Dokument (wo sich auch die definierten Kopf- und Zeilen befinden) und kopiere sie in allen Seiten des neu geöffneten Dokumentes und speicher es am Schluss.

Das Sections-Objekt ist eine Collection der Seiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallöchen Whiz-zarD,

vielen Dank für deine Antworten - und, ja genau, dass Wort "immer" macht die Arbeit 😂
Es sind nämlich 20-30 Dokumente täglich, nicht nur einmalig...

ich habe nun mal deine Code genommen - das würde auch fast klappen (der Weg ist super ☺️), aber wenn ich das richtig sehe muss ich dann jedes mal, für jedes zu bearbeitende Dokument "strTargetFileName =" anpassen, bzw. neu anlegen.

Würde es nicht gehen, dass die Kopf- und Fußzeilen "nur" aus einer Vorlage / einem "Musterdokument kopiert werden und in der gerade geöffneten Datei (in der die  Kopf- und Fußzeile rein soll) eingefügt werden und der Code nicht jedes Mal geändert werden müsste...?

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...