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, 2641 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
Batch & Shell

Mehrere Wörter ersetzen Powershell Skript

gelöst Frage von Beginner01Batch & Shell4 Kommentare

Hallo an die Gemeinde! Ich habe eine Textdatei, in der ich mehrere verteilte Wörter mittels Windows Powershell ersetzen möchte. ...

Microsoft Office

Text in mehreren .docx suchen und ersetzen

gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Ich hoffe auf Antworten von Leuten, die genau das per Tool schon mal gemacht haben: Selektiere mehrere ...

Microsoft Office

Mehrere Dokumente mit fehlerhafter Formatierung (Schriftbild)

Frage von 90584Microsoft Office4 Kommentare

Hallo, ich hab mal eine Frage. Ich habe bei einem Bekannten von mir folgendes Problem wo ich den Fehler ...

Microsoft Office

Öffnen von mehreren Excel Dokumenten ist nicht möglich

Frage von MaxPainMicrosoft Office6 Kommentare

Guten Tag zusammen, beim Arbeiten mit mehreren Excel Dokumenten (z.B. 2-3 eigenständige Dokumente), erhalte ich beim Öffnen einer weiteren ...

Neue Wissensbeiträge
LAN, WAN, Wireless

UniFi - UAP Antenna Radiation Patterns - WLAN Ausstrahlungsmuster

Information von StefanKittel vor 6 StundenLAN, WAN, Wireless

Hallo, wer sich schon immer mal gefragt hat wie der Unterschied in den WLAN Access Points bei Unifi wirklich ...

Windows Userverwaltung

Passwortwechsel in der Domain bei Anmeldung erzwingen

Anleitung von Looser27 vor 16 StundenWindows Userverwaltung6 Kommentare

Nachdem es immer wieder User geschafft haben, sich während des laufenden Betriebes auszusperren, habe ich nach einer Möglichkeit gesucht, ...

Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 3 TagenAusbildung40 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 5 TagenSpeicherkarten6 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
gelöst Frage von Looser27Windows Userverwaltung32 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Microsoft
Netzlaufwerksordner Berechtigungen Speichern unter aus Programmen
gelöst Frage von ITler7Microsoft19 Kommentare

Moin, bin in ein neues Unternehmen eingetreten und habe die Anforderung bekommen Berechtigungen auf einige Ordner anzupassen, da bisher ...

Windows Server
Probleme im AD am Außenstandort
gelöst Frage von emeriksWindows Server19 Kommentare

Hi, wir haben ein Problem mit AD und GPO am Außenstandort und ich stehe momentan mächtig auf dem Schlauch. ...

Flatrates
Geschwindikeitsprobleme zwischen 1 und 1 - Vodafone Heimnetz
Frage von muenchhausenFlatrates15 Kommentare

Moin erstmal, Vorweg mein Setup 1. Wohnsitz Vodafone 400K Leitung (kommt sogar komplett an, auch um 18 Uhr) 2. ...