Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Dokumentformatvorlagen in mehreren Dokumenten ersetzen

Mitglied: ahstax

ahstax (Level 2) - Jetzt verbinden

26.08.2013, aktualisiert 27.08.2013, 2648 Aufrufe, 11 Kommentare, 3 Danke

Hallo,

ich möchte gerne mit einem Makro in einigen vielen Dokumenten (Formbriefe) die verwendeten Dokumentenformatvorlagen ersetzen. Mein Code bis dato (der nicht funktioniert...) sieht so aus:

01.
Sub FormatvorlagenZuweisen01()
02.
 
03.
    Dim oTemplate As Template
04.
    Dim oDoc As Document
05.
    Dim oDocPath As String
06.
    Dim intDokumentenzaehler As Integer
07.
        intDokumentenzaehler = 0
08.
    
09.
    
10.
    Set oTemplate = "\\Server\Speicherort\Formbriefe Test\Vorlage\test.dot"
11.
    Set oDocPath = "\\Server\Speicherort\Formbriefe Test\"
12.
    
13.
    For Each oDoc In oDocPath
14.
        Set oDoc = ActiveDocument
15.
        With ActiveDocument
16.
            .UpdateStylesOnOpen = False
17.
            .AttachedTemplate = oTemplate
18.
            .Save
19.
            .Close
20.
        End With
21.
        intDokumentenzaehler = intDokumentenzaehler + 1
22.
        Set oDoc = Nothing
23.
    Next oDoc
24.
    
25.
    MsgBox "Bearbeitete Dokumente: " & intDokumentenzaehler
26.
    
27.
End Sub
Die Fehlermeldung beim Kompilieren lautet:
"Typen unverträglich"

Daraus entnehme ich, dass Variablen nicht miteinander verträglich sind.

Kann mir bitte jemand sagen, ob mein Vorhaben durchführbar ist und wo mein Fehler im Code liegt?

Neugierige Grüße,
Andreas

(Word 2010)
Mitglied: colinardo
26.08.2013, aktualisiert um 15:48 Uhr
Hallo Andreas,
so wie du das versuchst geht es leider nicht.
Ungetestet müsstest du es in dieser Art machen:
01.
Sub FormatvorlagenZuweisen01()
02.
   
03.
    Dim oTemplate
04.
    Dim oDoc As Document
05.
    Dim oDocPath As String
06.
    Dim intDokumentenzaehler As Integer
07.
    intDokumentenzaehler = 0
08.
    
09.
    Set fso = CreateObject("Scripting.Filesystemobject")
10.
    
11.
    Set oTemplate = "\\Server\Speicherort\Formbriefe Test\Vorlage\test.dot"
12.
    Set oDocPath = "\\Server\Speicherort\Formbriefe Test\"
13.
 
14.
    Application.DisplayAlerts = wdAlertsNone
15.
 
16.
    For Each f In fso.GetFolder(oDocPath).Files
17.
        If LCase(Right(f.Name, 3)) = "doc" Or LCase(Right(f.Name, 4)) = "docx" Or LCase(Right(f.Name, 4)) = "docm" Then
18.
            Set oDoc = Application.Documents.Open(f.Path, Visible:=False)
19.
            With oDoc
20.
                .AttachedTemplate = oTemplate
21.
                .Save
22.
                .Close
23.
            End With
24.
            intDokumentenzaehler = intDokumentenzaehler + 1
25.
            Set oDoc = Nothing
26.
        End If
27.
    Next
28.
    Set fso = Nothing
29.
    Application.DisplayAlerts = wdAlertsAll
30.
 
31.
    MsgBox "Bearbeitete Dokumente: " & intDokumentenzaehler
32.
End Sub

Grüße Uwe
Bitte warten ..
Mitglied: ahstax
26.08.2013 um 13:47 Uhr
Hallo Uwe,

Ungetestet müsstest du es in dieser Art machen:

Getestet auch!

Danke Dir!!!
Bitte warten ..
Mitglied: ahstax
26.08.2013 um 13:56 Uhr
Das hier:
01.
Dim oTemplate As Template
muss bei mir ein String sein... ist mir noch aufgefallen
Bitte warten ..
Mitglied: colinardo
26.08.2013 um 13:58 Uhr
stimmt, ist korrigiert
Bitte warten ..
Mitglied: ahstax
26.08.2013, aktualisiert um 15:30 Uhr
Jetzt war ich zu schnell (beim "als gelöst" markieren)...

Wie kann ich nachfolgenden Schnipsel passend machen, damit ALLE Formatvorlagen mitgenommen werden, auch die Nummerierungen...

01.
Application.OrganizerCopy Source:=, _
02.
   Destination:=, _
03.
   Name:=ALLE, _
04.
   Object:=
05.
Next styleLoop
Kann man
01.
For Each styleLoop In fso.getFile(oTemplate).Styles
02.
...
03.
Next styleLoop
irgendwie verwenden?
Bitte warten ..
Mitglied: colinardo
26.08.2013 um 16:17 Uhr
Also alle Styles die in die im alten Template des Dokuments vorhanden waren, kannst du so in das Dokument einbetten, bevor du das Dokument mit dem neuen Template verknüpfst. Wichtig: Diesen Schnippsel vor Zeile 20 in obigen Script einfügen.
01.
oDoc.CopyStylesFromTemplate (oDoc.AttachedTemplate.FullName)
Grüße Uwe
Bitte warten ..
Mitglied: ahstax
26.08.2013 um 16:25 Uhr
Diese Zeile hatte ich zwischenzeitlich auch irgendwo gelesen und ausprobiert...

Aber natürlich an der völlig falschen Stelle eingefügt, so dass das Ergebnis Müll war. So sieht es jetzt so aus, als ob es geht. Ich werde weiter berichten...!

Danke erst mal!!!
Bitte warten ..
Mitglied: ahstax
26.08.2013 um 16:31 Uhr
Kann es sein, dass sich Word schwer tut, die Formatierungen von Aufzählungen (Nummerierungen mit Zahlen, Buchstaben) sauber zu übernehmen?
Gibts da noch einen Trick?
Bitte warten ..
Mitglied: ahstax
27.08.2013, aktualisiert um 11:31 Uhr
Hallo miteinander,

hier klick
hab ich gelesen, dass .CopyStylesFromTemplate alleine insbesondere bei Nummerierungsvorlagen nicht ausreichen kann. Es wird vorgeschlagen, zusätzlich Application.OrganizerCopy zu verwenden. (Es sollen ja alle Formatvorlagen, auch die für die Nummerierungen) mitgenommen werden).

Ich habe versucht, meinen Code entsprechend anzupassen. Blöderweise erhalte ich regelmäßig einen Fehler 4198 ("Befehl misslungen"), den ich Zeile 76ff. versuche abzufangen.
Schlußendlich besagt mir die Messagebox Zeile 85 dann aber, dass KEINE Formatvorlage angewandt wurde.

Kann mir jemand einen Tipp geben?

01.
Public Sub FormatvorlagenZuweisen()
02.
   
03.
    Dim oTemplate As String
04.
    Dim oDoc As Document
05.
    Dim oDocPath As String
06.
    Dim intDokumentenzaehler As Integer
07.
    intDokumentenzaehler = 0
08.
    Dim intDokumentenzaehlerBearbeitet As Integer
09.
    intDokumentenzaehlerBearbeitet = 0
10.
    
11.
    Dim intAnzahlZuPruefenderDateien As Integer
12.
    intAnzahlZuPruefenderDateien = 0
13.
    
14.
    Dim oStyle As Style
15.
    Dim strStyle As String
16.
    Dim DocTmp As Document
17.
    Dim i As Long
18.
    
19.
    Dim stlVorlage As Style
20.
    Dim intBenutzte As Integer
21.
    Dim intVergeblich As Integer
22.
    Dim intGeklappt As Integer
23.
    Dim docVorlage As Document
24.
    
25.
    Set fso = CreateObject("Scripting.Filesystemobject")
26.
    
27.
    
28.
    oTemplate = fm1.txtBxPfadVorlage.Text
29.
    oDocPath = fm1.txtBxPfadDokumentenOrdner.Text
30.
 
31.
 
32.
    Application.DisplayAlerts = wdAlertsNone
33.
    
34.
    fm1.cmdBtnStart.Caption = "Bearbeitung läuft"
35.
    
36.
    intAnzahlZuPruefenderDateien = fso.GetFolder(oDocPath).Files.Count
37.
    
38.
    For Each f In fso.GetFolder(oDocPath).Files
39.
    
40.
        intDokumentenzaehler = intDokumentenzaehler + 1
41.
        
42.
        fm1.cmdBtnStart.Caption = "Bearbeitung / Prüfung läuft" & vbCrLf & intDokumentenzaehler & "/" & intAnzahlZuPruefenderDateien
43.
        
44.
        If LCase(Right(f.Name, 3)) = "doc" Or LCase(Right(f.Name, 4)) = "docx" Or LCase(Right(f.Name, 4)) = "docm" Then
45.
            Set oDoc = Application.Documents.Open(f.Path, Visible:=False)
46.
            With oDoc
47.
            
48.
                .CopyStylesFromTemplate Template:=oTemplate
49.
                
50.
                '   http://www.office-archive.com/59-word/55712f65c723e7ee.htm
51.
                
52.
                .AttachedTemplate = oTemplate
53.
                
54.
                  
55.
                  Set docVorlage = Documents.Open(oTemplate, Visible:=False)
56.
                  
57.
                    ' Copy all styles using the organizer
58.
                  intBenutzte = 0
59.
                  intVergeblich = 0
60.
                  intGeklappt = 0
61.
                  
62.
                  On Error Resume Next
63.
                  
64.
                  For Each stlVorlage In docVorlage.Styles
65.
                  
66.
                    If stlVorlage.InUse = True Then
67.
                        intBenutzte = intBenutzte + 1
68.
                    End If
69.
                  
70.
                    Application.OrganizerCopy _
71.
                        Source:=docVorlage.FullName, _
72.
                        Destination:=oDoc.FullName, _
73.
                        Name:=stlVorlage.NameLocal, _
74.
                        Object:=wdOrganizerObjectStyles
75.
                        
76.
                        If Err.Number = 4198 Then
77.
                            intVergeblich = intVergeblich + 1
78.
                        Else
79.
                            intGeklappt = intGeklappt + 1
80.
                        End If
81.
                            
82.
                  Next stlVorlage
83.
                  
84.
                  'http://www.office-loesung.de/ftopic39646_0_0_asc.php
85.
                  MsgBox intVergeblich & " vergebliche Versuche!" & Chr(13) & intGeklappt & " erfolgreiche!" & _
86.
                        Chr(13) & intBenutzte & " benutzte!"
87.
                  
88.
                  ' Close the template and don't save any changes.
89.
                  docVorlage.Close False
90.
                                
91.
                .Save
92.
                .Close
93.
            End With
94.
            intDokumentenzaehlerBearbeitet = intDokumentenzaehlerBearbeitet + 1
95.
            Set oDoc = Nothing
96.
            
97.
        End If
98.
    Next
99.
    Set fso = Nothing
100.
    Application.DisplayAlerts = wdAlertsAll
101.
 
102.
    MsgBox "Bearbeitete Dokumente: " & intDokumentenzaehlerBearbeitet
103.
    
104.
    fm1.cmdBtnStart.Caption = "Übertragung Formatierung starten" 
105.
    
106.
End Sub
neugierige Grüße,
Andreas
Bitte warten ..
Mitglied: ahstax
27.08.2013 um 15:14 Uhr
Kann man da vielleicht was mit .ListTemplates machen?
Wenn ja, hab ich noch nicht verstanden, wie...
Bitte warten ..
Mitglied: ahstax
09.09.2013 um 14:18 Uhr
Ja, der Fehler saß mal wieder vor dem PC...

Wichtig ist (nach meiner Beobachtung), dass man bei einem Office 2010-PC eine Vorlage im dotx-Format verwendet.
Dann klappts auch mit dem Nachbarn...!

Danke für die Hilfe der versammelten Mannschaft!
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
XLSX Dokument Formatierung
gelöst Frage von HanutaMicrosoft Office7 Kommentare

Hallo Zusammen, ich habe eine XLSX Datei, die von einem MAC Rechner gespeichert wird und anschließend von einem Windowsrechner ...

Backup
Backup von WORD dokument
gelöst Frage von justdanBackup9 Kommentare

Hallo, Ein WORD Dokument wurde überschrieben! Kann ich irgendwie dieses DOC Backupen von gestern oder vorgestern machen? Also Veritas ...

Netzwerkgrundlagen
Dokument zum Bearbeiten gesperrt, wieso?
Frage von McLionNetzwerkgrundlagen3 Kommentare

Hallo, ich öffne mit LibreOffice eine .doc-Datei, diese liegt auf einer Freigabe auf nem Rechner im Netzwerk. Seit ein ...

Microsoft Office
Saubere HTML aus Word-Dokument
Frage von peterpaMicrosoft Office19 Kommentare

Hallo, kennt jemand eine Möglichkeit ein Word-Dokument in eine "saubere" HTML-Seite zu wandeln? Ja es gibt die Möglichkeit diese ...

Neue Wissensbeiträge
Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 9 StundenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 3 TageniOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 4 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 6 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Heiß diskutierte Inhalte
Windows Server
Einziger Domänencontroller ersetzen - Windows Server 2012R2 - Hostname
Frage von DeRo93Windows Server26 Kommentare

Guten Tag, Leider haben wir einen Domänencontroller dessen Komponentenspeicher defekt ist. Alle Maßnahmen sind da leider fehlgeschlagen. Nun wurde ...

Server-Hardware
WS 2016 Essentials Hardware
Frage von ChefknechtServer-Hardware20 Kommentare

Moin welche Hardware würdet ihr empfehlen? Dell Poweredge HP Proliant Fujitsu Ich bin total konfus was nun nötig ist, ...

Windows Server
Welche Option fürs Windows Server Installations besser
Frage von backitWindows Server18 Kommentare

Hi Zusammen, ich werde unserer AD (SBS 2011) und Exchange 2010 Servern auf neuen physikalischen Server umziehen. ich habe ...

Windows Update
Fehler bei Updates über WSUS
Frage von Hendrik2586Windows Update12 Kommentare

Guten Tag liebe Kolleginen und Kollegen, lang lang ist meine letzte Anfrage her. Hier etwas das mich nun schon ...