
Я пытаюсь создать макрос для массового поиска и замены в нескольких документах Word. Я нашел его в сети и изменил его, чтобы он также применялся к графикам, однако я продолжаю получать ошибку времени выполнения (5174), сообщающую, что файл не найден (хотя он определенно находится в папке).
Я полагаю, что проблема в следующем: support.microsoft.com/en-us/kb/212664, но у меня возникли некоторые трудности с реализацией этого в моем макросе, поскольку простое добавление «.docx» после каждого отдельного Fname, похоже, не работает.
У меня ограниченный опыт работы с макросами, поэтому прошу прощения, если это вопрос новичка.
Любая помощь будет высоко оценена.
Спасибо.
Sub ReplaceText()
Dim Directory As String
Dim FType As String
Dim FName As String
Directory = "C:\Users\pieria\Desktop\TempPics"
FType = "*.docx"
ChDir Directory
FName = Dir(FType)
' for each file you find, run this loop
Do While FName <> ""
' open the file
Documents.Open FileName:=FName '<--Error is supposedly here
' search and replace the company name
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "CompanyA"
.MatchCase = True
.Replacement.Text = "CompanyB"
End With
Selection.Find.Execute Replace:=wdReplaceAll
' save and close the current document
ActiveDocument.Close wdSaveChanges
' look for next matching file
FName = Dir
Loop
End Sub
решение1
Я ожидаю, что текущий экземпляр не будет знать, что ChDir
вы сделали. Вы лучше укажите полный путь при открытии файла:
' open the file
Documents.Open FileName:= Directory & "\" & FName
Я объединяю строку в оператор Directory
и FName
с ним &
.
Так что если Directory
содержит C:\Users\pieria\Desktop\TempPics
и FName
содержит First.docx
с &
вы создаете новую строкуC:\Users\pieria\Desktop\TempPics\First.docx
Обратите внимание на букву \
«I» между именем каталога и именем файла...