Prakti 10 Geschrieben 9. Dezember 2003 Melden Teilen Geschrieben 9. Dezember 2003 Hi, ich hab folgende Frage. Ich will in ca 400 Word Dokumenten gleiche Inhalte ersetzen. Ich hab dafür ein Makro erstellt, dass alle gewünschten Strings ersetzt. Nur muss man um das Makro auszuführen erst die Datei öffnen und Änderungen werden nur für das aktuelle Dokument übernommen. Gibt es eine Möglichkeit die Änderungen des Makros in allen 400 Dokumente gleichzeitig auszuführen? Idealerweise vielleicht sogar ohne die Dateien öffnen zu müssen? Vielen Dank Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 9. Dezember 2003 Melden Teilen Geschrieben 9. Dezember 2003 Im Prinzip geht dies schon - Du must das Makro halt direkt ergänzen. Mit Dir(Pfadname) bekommst Du die erste Datei im Ordner, dann in einer Schleife mit Dir() solange weitermachen, bis "" zurückkommt. Mit Dim myDoc As Word.Document, _ wert_von_dir As String wert_von_dir = Dir() Set myDoc = Documents.Open(wert_von_dir) öffnest Du das Dokument und werkelst auf der Variablen myDoc, die zuvor deklariert wurde. --------- Gruß, Auer Zitieren Link zu diesem Kommentar
Prakti 10 Geschrieben 10. Dezember 2003 Autor Melden Teilen Geschrieben 10. Dezember 2003 so nochmal ich...dank des tipps bin ich nun schon weiter aber leider erscheint beim ausführen des Makros die Fehlermeldung, dass die Datei nicht gefunden wurde obwohl der Name der in Klammern darunter steht korrekt ist. Hier das Skript...vielleicht findet jemand ja einen Denk- oder Programmierfehler. Danke Sub makro() Set fso = CreateObject("Scripting.FileSystemObject") Dim Folder Set Folder = fso.GetFolder("C:\folder") Dim Files Set Files = Folder.Files Dim Doc As Document For Each File In Files Set Doc = Documents.Open(File.Name) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "original" .Replacement.Text = "replace" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Selection.Find.Execute Replace:=wdReplaceAll Doc.Close saveChanges:=True Next End Sub Zitieren Link zu diesem Kommentar
MiLLHouSe 15 Geschrieben 10. Dezember 2003 Melden Teilen Geschrieben 10. Dezember 2003 Hey, wenn ihr schon so fleißig dabei seit, ich bin verzweifelt auf der Suche, wie man in ca. 5000 Dokumenten auf Grund einer Serverumstellung die Dokumentenvorlagen ändern kann ohne größeren Aufwand. Gibt es da ne Möglichkeit? Dazu ist noch zu sagen, dass die Dokumente nicht alle die gleiche Vorlage sondern immer wieder verschiedene nutzen. Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 10. Dezember 2003 Melden Teilen Geschrieben 10. Dezember 2003 Irgendein Fehler wird sich in dem Code oben noch eingeschlichen haben, eventuell wird einfach die falsche Datei geöffnet. Zur Diagnose zwei Hinweise: 1. Im VBEditor unter Extras - Verweise die Microsoft Scripting Runtime anhaken. Falls es diese nicht geben sollte, über Durchsuchen die .\System32\scrrun.dll hinzufügen, das ist die zugehörige DLL. Dann kannst Du Dim fso As New Scripting.FileSystemObject verwenden, Folder und File analog - da sieht man sehr viel mehr. 2. Stelle den Cursor in das Makro und drücke oft F8. Damit läßt sich das Makro Schritt für Schritt ausführen. Bricht es an einer Stelle ab: Lass dir davor mit MsgBox die aktuellen Werte ausgeben, irgendeine Pfadgeschichte stimmt da nicht. @MiLLHouSe: Mach es analog wie @Prakti, die Schleifenstruktur ist genau das, was man um den Einzelbefehl drumherumbauen muß. ---------- Gruß, Auer Zitieren Link zu diesem Kommentar
MiLLHouSe 15 Geschrieben 18. Dezember 2003 Melden Teilen Geschrieben 18. Dezember 2003 Ne, ich mein nicht die Inhalte in dem Dokument selber sondern eher die Pfade zu der Dokumentenvorlage, die sich geändert haben. (Extras - Vorlagen und Addins....) Die Pfade haben sich bei allen Dokumenten geändert, so dass das Öffnen derzeit 3-5 Minuten in Anspruch nimmt... Die Dateien haben nicht alle die gleiche Dokumentenvorlage, das vielleicht sei noch angemerkt. Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 19. Dezember 2003 Melden Teilen Geschrieben 19. Dezember 2003 Den für eine solche Schleifenstruktur benötigten inneren Teil kann man sich immer mit dem Makro-Recorder aufzeichnen. Dann arbeitet man diesen Code schrittweise durch und paßt jene Stellen an, bei denen man auf die aus der Schleifenstruktur erhaltenen Objekte Bezug nimmt. ----------- Gruß, Auer Zitieren Link zu diesem Kommentar
MiLLHouSe 15 Geschrieben 19. Dezember 2003 Melden Teilen Geschrieben 19. Dezember 2003 ok, danke für den tipp: Sub test() ' ' test Makro ' Makro aufgezeichnet am 19.12.2003 von AS ' With ActiveDocument .UpdateStylesOnOpen = False .AttachedTemplate = "Laufwerk:\Serverpfad\Datei" End With End Sub So, und wie schaffe ich es jetzt, dass er mir nur das ersetzen soll, was vor "Datei" steht? Sprich er soll mir "Lauferk:\Serverpfad\" ersetzen und die Datei stehen lassen...... Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 19. Dezember 2003 Melden Teilen Geschrieben 19. Dezember 2003 Jede Programmiersprache kennt Stringoperationen, mit denen sich solche Probleme bearbeiten lassen. Wenn Dir solche Dinge allerdings massiv unklar sind, dann übe erst einige Wochen damit. Sonst zerschießt Du dir 5000 Dokumente auf einmal, da ist jeder Virus dagegen langweilig und harmlos. ------------- Gruß, Auer Zitieren Link zu diesem Kommentar
MiLLHouSe 15 Geschrieben 19. Dezember 2003 Melden Teilen Geschrieben 19. Dezember 2003 Naja, ich würde eh erst mal die Dateien lokal kopieren und da testen, da kann's mir dann egal sein, wenn was zerschossen würde. Aber mir fehlt momentan echt der Durchblick , aber vielleicht kommt das ja wieder :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.