MS Word 2003: Mehrere Dateien gleichzeitig Einträge aktualisieren?

Dieses Thema MS Word 2003: Mehrere Dateien gleichzeitig Einträge aktualisieren? im Forum "Microsoft Office Suite" wurde erstellt von Markolf, 7. Mai 2013.

Thema: MS Word 2003: Mehrere Dateien gleichzeitig Einträge aktualisieren? Guten Tag zusammen, ich habe einen ganzen Stapel MS Word 2003 Dateien *.doc, die ich immer wieder reproduzieren muß....

  1. Guten Tag zusammen,
    ich habe einen ganzen Stapel MS Word 2003 Dateien *.doc, die ich immer wieder reproduzieren muß. Dabei wird nur ein einziger Eintrag verändert. Anders als bei einen Serienbrief, wo das Dokument immer gleich bleibt, aber die Adreßeinträge verändert werden, muß ich hier die immer gleiche Adresse in ca. 35 Dateien einfügen. 35 Dokumente müssen also an jeweils einer einzigen Stelle verändert werden. Bisher habe ich die zu verändernde Stelle jeweils als Textfeld eingebaut. Von Hand ist das Ändern von 35 Dokumenten *erm* sagen wir - unproduktiv. ???

    Frage: Hat jemand eine Idee, wie man das hinkriegen kann, daß 35 Dokumente gleichzeitig an dieser einenS telle aktualisiert werden? Ich weiß nicht, wonach ich suchen muß. Auch ein Stichwort könnte hilfreich sein.

    Vielen Dank!
    M.
     
  2. Hallo Yapp,

    mit einem Makro müßte das machbar sein.

    Anlegen sollte man dazu einen Ordner mit den entsprechenden Vorlagen. In den Vorlagen sollte der Text, der ersetzt werden soll, als Textmarke markiert sein. (In allen Dokumenten der gleiche Textmarken-Name.)
    Dann sollte weiterhin ein Ziel-Ordner angelegt werden, in dem die mit der Adresse versehenen Dokumente gespeichert werden.

    Ist die Adresse wirklich nur ein Text oder sind es mehrere Zeilen ?
    Frage dazu ist: wie kann das Makro zu dieser Information gelangen?
    Ist es nur ein Text könnte man diesen in eine Word-Datei schreiben, die auch das Makro enthält. Sind es mehrere Zeilen müßte das Makro die Angaben zeilenweise lesen und in mehrere Textmarken schreiben.
    Da solltest du mal ein Beispiel für die Adresse posten.

    Beim Makro kann ich dich dann unterstützen.

    Gruß Matjes :)
     
  3. Moin Matjes,
    danke für den Tip und Dein Hilfe-Angebot! :)

    Also, der jeweils zu aktualisierende Text besteht aus einer vollständigen Adresse, nach Schema:

    < Firma Name
    Niederlassung (Optional)
    Straße Nr.
    PLZ Ort >

    Sind also 3-4 Zeilen.

    In den Dateien habe ich dafür bisher ein Textfeld definiert, wo ich die Daten jeweils von Hand mit Copy Paste aktualisiert habe.

    Von Macro´s habe ich bisher keine Ahnung, insofern würde ich Dein Angebot gerne annehmen. Könntest Du ein Beispiel von der Struktur bauen und hier darstellen, vielleicht mit kurzer Anleitung? Das ist vermutlich auch für viele andere Forumsteilnehmer wertvoll. :1

    Vielen Dank!
    Yapp
     
  4. also dann mal ein Beispiel:

    Vorlagen hab ich in den Ordner
    Code:
    D:\00_TestExcel\TestDoc\Vorlagen
    gepackt. Das kann im Makro in der Variablen sPfadIn geändert werden.

    Output-Verzeichnis ist
    Code:
    D:\00_TestExcel\TestDoc\Ausgabe
    Das kann im Makro in der Variablen sPfadOut geändert werden.

    zu suchende Dateiendung ist als
    Code:
    .doc
    definiert. Das kann im Makro in der Variablen sDateiendung geändert werden.
    Die Vorlagen sind also als .doc-Dateien im Vorlagenverzeichnis hinterlegt.

    In den Vorlagen sind 4 Textmarken für Firma, Niederlassung, Straße Nr. und PLZ Ort zu setzen. Dabei ist darauf zu achten, daß jede Textmarke nicht !!! einen Zeilenvorschub einschließt. Dann würde beim Ersetzen des Textes der Textmarke der Zeilenvorschub mit ersetzt werden und die nachfolgende Zeile nach oben rutschen.
    Das gezielte Markieren erfolgt, indem man die Schreibmarke direkt hinter das zu markierende Wort setzt und dann die Markierung mit Shift+linke Pfeiltaste wie gewünscht erweitert. Dann Einfügen->Textmarke.
    Als Textmarkennamen hab ich TM1, TM2, TM3, TM4 gewählt. Das kann auch geändert werden. Im Makro werdren die Namen in den Variablen sTM(1-4)Name gespeichert.

    So. Nun leg ich im Verzeichnis Vorlagen die Makro-Datei Makro.doc an. Die wird bei der Dateisuche ausgefiltert, so dass sie nicht als Vorlage behandelt wird.
    In Zeile 1 bis 4 kommt jeweils der Text der in der Textmarke der Vorlagen ersetzt werden soll. Die Zeilen sind dabei durch einen Zeilenvorschub getrennt (Eingabetaste).
    Also z. B.
    Firma Turbo
    Section Automatio
    Abcstr. 22
    33330 Ortsangabe

    Mit Alt+F11 wird der VB-Editor in Word geöffnet. Im Projektfenster wird unter Project(Makro.doc) ein Modul eingefügt (recht Maustaste auf Projekt->Einfügen->Modul
    Im sich öffnenden Modul-Fenster den nachfolgenden Code per copy/Paste einfügen. GGf. die Inhalte der oben genannten Variablen den eigenen Gegebenheiten anpassen.
    Unter Extras->Verweise muß Microsoft Scripting Runtime angehakt werden, damit das Dateisuchen funktioniert.
    Mit Debuggen->Kompilieren von Projekt nochmal überprüfen ob alles ok ist. Dann mit Strg+S speichern und per Datei->Schliessen und zurück zu Word den VB-Editor schliessen.
    Jetzt mit Ansicht->Makros->Makros anzeigen->Makros in: Makro.doc->Verz_Dateien_TMsErsetzen->Ausführen das Makro ausprobieren.

    So, ich hoffe ich hab nichts wichtiges vergessen.

    Gruß Matjes :)

    Code:
    Option Explicit
    
    Sub Verz_Dateien_TMsErsetzen()
    ->fuer FSO muss im VB-Editor unter Extras->Verweise Microsoft Scripting Runtime angehakt sein
     Dim sTM1Name As String, sTM1Text As String, sTM2Name As String, sTM2Text As String
     Dim sTM3Name As String, sTM3Text As String, sTM4Name As String, sTM4Text As String
     Dim sPfadIn As String, sDateiendung As String, SPfadOut As String
     Dim f() As String, fCnt As Long, x As Long, pos As Long
     Dim doc As Document
     Dim ret As Integer
     
    ->Vorlagen-Pfad definieren
     sPfadIn = D:\00_TestExcel\TestDoc\Vorlagen
    ->zu suchende Dateiendung definieren'
     sDateiendung = .doc
    ->Ausgabe-Pfad definieren
     SPfadOut = D:\00_TestExcel\TestDoc\Ausgabe
    ->Textmarken-Namen definieren, so wie sie in den Vorlagen angelegt sind
     sTM1Name = TM1
     sTM2Name = TM2
     sTM3Name = TM3
     sTM4Name = TM4
     
    ->Text aus Zeile 1 in diesem Dokument ohne CR
     sTM1Text = ThisDocument.Paragraphs(1).Range.Text
     pos = InStr(1, sTM1Text, vbCr)
     If (pos > 0) Then sTM1Text = Left(sTM1Text, pos - 1)
     
    ->Text aus Zeile 2 in diesem Dokument ohne CR
     sTM2Text = ThisDocument.Paragraphs(2).Range.Text
     pos = InStr(1, sTM2Text, vbCr)
     If (pos > 0) Then sTM2Text = Left(sTM2Text, pos - 1)
     
    ->Text aus Zeile 3 in diesem Dokument ohne CR
     sTM3Text = ThisDocument.Paragraphs(3).Range.Text
     pos = InStr(1, sTM3Text, vbCr)
     If (pos > 0) Then sTM3Text = Left(sTM3Text, pos - 1)
     
    ->Text aus Zeile 4 in diesem Dokument ohne CR
     sTM4Text = ThisDocument.Paragraphs(4).Range.Text
     pos = InStr(1, sTM4Text, vbCr)
     If (pos > 0) Then sTM4Text = Left(sTM4Text, pos - 1)
     
    ->Dateien in Verzechnis suchen
     fCnt = 0
     If Not FSO_Folder_List_Files(sPfadIn, sDateiendung, f(), fCnt) Then GoTo AUFRAEUMEN
     If fCnt = 0 Then MsgBox Keine entsprechende Datei im Verzeichnis.: GoTo AUFRAEUMEN
     
    ->Für alle Dateien
     For x = 1 To fCnt
     ->Datei öffnen
      Set doc = Documents.Open(FileName:=sPfadIn & Application.PathSeparator & f(x))
     ->Alarm abschalten, damit ggf. eine Datei gleichen Namens im Zielverz.
     ->ohne Meldung überschrieben werden kann
      Application.DisplayAlerts = wdAlertsNone
     ->Datei im ZielVerz. speichern
      doc.SaveAs FileName:=SPfadOut & Application.PathSeparator & f(x)
     ->Alarm wieder anschalten
      Application.DisplayAlerts = wdAlertsAll
      
     ->Text der Textmarke 1 ersetzen
      On Error Resume Next
      doc.Bookmarks(sTM1Name).Range.Text = sTM1Text
      If Err.Number <> 0 Then
       MsgBox (Textmarke-> & sTM1Name &-> in Datei  & f(x) &  nicht vorhanden.)
       doc.Close Savechanges:=False
       GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
     ->Text der Textmarke 2 ersetzen
      On Error Resume Next
      doc.Bookmarks(sTM2Name).Range.Text = sTM2Text
      If Err.Number <> 0 Then
       MsgBox (Textmarke-> & sTM2Name &-> in Datei  & f(x) &  nicht vorhanden.)
       doc.Close Savechanges:=False
       GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
     ->Text der Textmarke 3 ersetzen
      On Error Resume Next
      doc.Bookmarks(sTM3Name).Range.Text = sTM3Text
      If Err.Number <> 0 Then
       MsgBox (Textmarke-> & sTM3Name &-> in Datei  & f(x) &  nicht vorhanden.)
       doc.Close Savechanges:=False
       GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
     ->Text der Textmarke 4 ersetzen
      On Error Resume Next
      doc.Bookmarks(sTM4Name).Range.Text = sTM4Text
      If Err.Number <> 0 Then
       MsgBox (Textmarke-> & sTM4Name &-> in Datei  & f(x) &  nicht vorhanden.)
       doc.Close Savechanges:=False
       GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
    
     ->Datei schliessen mit Speichern
      doc.Close Savechanges:=True
     Next
     
    AUFRAEUMEN:
     Set doc = Nothing
    End Sub
    
    '**************************************************************************************************************
    Private Function FSO_Folder_List_Files(sPfad As String, sDateiendung As String, f() As String, fCnt As Long) As Boolean
    ->fuer FSO muss im VB-Editor unter Extras->Verweise Microsoft Scripting Runtime angehakt sein
     Dim oFso As FileSystemObject, oVerzeichnis As Folder, oFile As File
     
     FSO_Folder_List_Files = False
     
    ->FileSystemObject für den Zugriff auf Verzeichnis-Struktur erzeugen
     Set oFso = New Scripting.FileSystemObject
     
     On Error Resume Next
    ->Verzeichnis lesen
     Set oVerzeichnis = oFso.GetFolder(sPfad)
     If oVerzeichnis Is Nothing Then MsgBox Pfad nicht vorhanden:  & vbCrLf & sPfad: GoTo AUFRAEUMEN
     On Error GoTo 0
     
    ->Alle Filenamen speichern
     If oVerzeichnis.Files.Count > 0 Then
      ReDim f(1 To oVerzeichnis.Files.Count)
      fCnt = 0
      For Each oFile In oVerzeichnis.Files
      ->Nur Dateien mit entsprechender Dateiendung bearbeiten
       If (Right(oFile.Name, Len(sDateiendung)) = LCase(sDateiendung)) Then
       ->prüfen, ob es die eigene Datei ist. ja-> überspringen
        If ThisDocument.FullName <> oFile.Path Then
        ->Arbeitsdateien nicht betrachten (fangen mit ~ an)
         If Left(oFile.Name, 1) <> ~ Then
          fCnt = fCnt + 1
          f(fCnt) = oFile.Name
         End If
        End If
       End If
      Next
     End If
     
     FSO_Folder_List_Files = True
    AUFRAEUMEN:
     Set oFso = Nothing: Set oVerzeichnis = Nothing: Set oFile = Nothing
    End Function
     
Die Seite wird geladen...

MS Word 2003: Mehrere Dateien gleichzeitig Einträge aktualisieren? - Ähnliche Themen

Forum Datum
Bei Word Office Paket 2003 oberen Cursor beginn einstellen? Windows XP Forum 8. Dez. 2013
Word 2003 - Startbildschirm Microsoft Office Suite 13. Nov. 2012
Word 2003 Windows XP Forum 2. Okt. 2012
word 2003, 2007, 2010 – vollbild ansicht Windows XP Forum 22. Aug. 2012
Word 2003 Abkürzungen bei Grammatikprüfung auslassen....? Microsoft Office Suite 1. Aug. 2012