With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
iPath = .SelectedItems(1)
iPath = IIf(Right(iPath, 1) = "\", iPath, iPath & "\")
Else
MsgBox "Выберите нужную папку", vbCritical, ""
Exit Sub
End If
End With
Интересно, но почему-то макрос не исправляет всё содержимое колонтитулов. Что-то поправляет, что-то оставляет как есть))) Загадка...
1) Скачайте пример из поста #6
2) Составьте свой список автозамены
3) В макросе укажите свою папку
4) В макросе укажите расширение файлов (сейчас там только .doc) если есть шанс, что в папке могут наличествовать документы различных версий, например и .docx, то "замените" "*.doc" на "*.doc*"
5) Кликните кнопку Замена в файлах .doc
P.S. Повторюсь, но тестировать лучше на копиях документах, ибо отката(отмены действий макроса) уже не будет.
Do
Set iWordDoc = iWordApp.Documents.Open(iPath & iFileName)
With iWordDoc.Content.Find
For iCounter = 1 To iCount
.Execute FindText:=iArrText(iCounter, 1), _
ReplaceWith:=iArrText(iCounter, 2), Replace:=2 'wdReplaceAll
Next
End With
................
Private Sub Test()
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
iPath = .SelectedItems(1)
iPath = IIf(Right(iPath, 1) = "\", iPath, iPath & "\")
Else
MsgBox "§£§í§Ò§Ö§â§Ú§ä§Ö §ß§å§Ø§ß§å§ð §á§Ñ§á§Ü§å", vbCritical, ""
Exit Sub
End If
End With
If iFileName <> "" Then
With Range(Cells(2, "A"), Cells(Rows.Count, "B").End(xlUp))
iArrText = .Value: iCount = UBound(iArrText)
End With
Do
Set iWordDoc = iWordApp.Documents.Open(iPath & iFileName)
With iWordDoc.Content.Find
For iCounter = 1 To iCount
.Execute FindText:=iArrText(iCounter, 1), _
ReplaceWith:=iArrText(iCounter, 2), Replace:=2 'wdReplaceAll
Next
End With
End With
iFileName = Dir(iPath & "*.doc*")
If iFileName <> "" Then
И не стоит забывать, что в этом примере функция Dir будет игнорировать файлы с атрибутами Скрытый и/или Только для чтения. Если же это неприемлемо, то здесь в Example2 есть решение.
Спасибо, сделал, теперь диалог открывается но выдается ошибка 5151
Pashulka a давайте еще упростим задачу? Исходник был написан для множественных файлов в выбранной папке. Но мне нужен один файл, не подскажете какой диалог лучше для выбора одного файла? Я диалог отлажу отдельно а потом перейдем к замене. Спасиб
Dim iFileName As Variant
iFileName = Application.GetOpenFilename("Word Files (*.doc*), *.doc*")
If iFileName <> False Then
MsgBox iFileName, , ""
Else
MsgBox "Надо было выбрать документ", vbCritical, ""
End If