2017-01-16 1 views
0

Ich habe etwa 700 verschiedene Word-Dokumente, die basierend auf einer Textzeichenfolge umbenannt werden müssen. Das Format jedes der Wörter Dokumente sind genau gleich.VBA-Makro, liest ein Word-Dokument und speichert dann das Dokument basierend auf Text in Datei?

In dem Wort doc gibt es eine Zeichenfolge mit dem Text "Ihr Firmenname 0001 - Reno, NV". Jedes der 700 Dokumente enthält einen anderen Standortnamen.

Ich brauche ein VBA-Makro, das jedes dieser Word-Dokumente scannen kann, um diese Textzeichenfolge zu finden und das Dokument dann entsprechend dem Ort zu speichern. So in diesem Fall sollte das Dokument gespeichert werden: 0001 - Reno, NV.docx

Mein Code so weit ist:

Sub Macro1() 
Dim strFilename As String 
Dim rngNum As Range 
Dim fd As FileDialog 
Dim strFolder As String 
Set fd = Application.FileDialog(msoFileDialogFolderPicker) 
With fd 
    .Title = "Select the folder that contains the documents." 
    If .Show = -1 Then 
     strFolder = .SelectedItems(1) & "\" 
    Else 
     MsgBox "You did not select the folder that contains the documents." 
     Exit Sub 
    End If 
End With 
MkDir strFolder & "Processed" 
strDoc = Dir$(strFolder & "*.docx") 
While strDoc <> "" 
    Set Doc = Documents.Open(strFolder & strDoc) 
    With Doc 
     Selection.HomeKey wdStory 
     Selection.Find.ClearFormatting 
     With Selection.Find 
      Do While .Execute(FindText:="Your establishment name [0-9]{4}", MatchWildcards:=True, Forward:=True, Wrap:=wdFindStop) = True 
       With Selection 
        Set rngNum = .Range 
        strFilename = Right(.Range.Text, 4) 
       End With 
      Loop 
     End With 
     .SaveAs strFolder & "Processed\" & strFilename 
    End With 
    strDoc = Dir$() 
Wend 
End Sub 

Dieser Code, zumindest in der Theorie, hat man wählen Sie den Ordner in die alle 700 Dokumente vorhanden sind, und erstellt dann einen neuen Ordner mit dem Namen "Verarbeitet", in dem alle neuen, umbenannten Dokumente platziert werden.

Allerdings, wenn ich den Code ausführen, erhalte ich diesen Fehler:

Run time error '5152': 
This is not a valid file name. 
Try one or more of the following: 
*Check the path to make sure it was typed correctly. 
*Select a file from the list of files and folders. 
+0

warten, jetzt ist es Word-Dateien? In deiner anderen Frage im anderen Forum waren es PDF-Dateien. – teylyn

+0

Ja, ich habe sie alle in Word-Dokumente konvertiert. Es stellte sich heraus, dass es einfacher war, mit vba auf diese Weise zu arbeiten. – Darren

+0

Also, was ist 'strFilename', wenn Sie den Fehler bekommen? – Comintern

Antwort

1

ich Ihren Code leicht modifiziert, während ich es testete es leichter lesbar zu machen, nicht genau das war sicher, wo Ihre Fehler aufgetreten sind aus Richtung aber der folgende Code für mich gearbeitet:

Sub Macro1() 
Dim strFolder As String 
Dim strDoc As String 
Dim wordApp As Word.Application 
Dim wordDoc As Word.document 

Set wordApp = New Word.Application 
wordApp.Visible = True 

Dim fd As FileDialog 
Set fd = Application.FileDialog(msoFileDialogFolderPicker) 
With fd 
    .Title = "Select the folder that contains the documents." 
    If .Show = -1 Then 
     strFolder = .SelectedItems(1) & "\" 
    Else 
     MsgBox "You did not select the folder that contains the documents." 
     Exit Sub 
    End If 
End With 

MkDir strFolder & "Processed" 

strDoc = Dir$(strFolder & "*.docx") 
While strDoc <> "" 
    Set wordDoc = Word.Documents.Open(strFolder & strDoc) 
    With wordDoc 
     .Content.Select 
     With wordApp.Selection.Find 
      .Text = "Your establishment name [0-9]{4}" 
      .MatchWildcards = True 
      .wrap = wdFindStop 
      .Execute 
     End With 
     .SaveAs strFolder & "Processed\" & Right(wordApp.Selection, 4) & ".docx" 
     .Close 
    End With 
    strDoc = Dir$() 
Wend 

wordApp.Quit 
Set wordApp = Nothing 
End Sub 

hoffe, das hilft, TheSilkCode

+0

Hallo, vielen Dank für die Antwort. Wenn ich diesen Code ausführe, erhalte ich diesen Fehler: "Objektvariable oder Mit Blockvariable nicht gesetzt". Irgendeine Idee, was dieses Problem verursacht? – Darren

+0

Nur ein Hinweis: Ich habe die Microsoft Word 14.0-Objektbibliothek und die Microsoft Office 14.0 Object Library-Referenzfelder im VBE-Menü überprüft. Ich dachte, dies könnte das Problem verursachen ... – Darren

+0

Hi Darren - welche Zeile gibt Ihnen den Fehler? – TheSilkCode

Verwandte Themen