Здравствуйте. Создал скрипт для пакетной замены одной фамилии на другую. Когда вбиваю в команду Replace текст на поиск и замену напрямую, все работает, когда считываю из ячеек и подставляю через переменные - не работает.
Код |
---|
'Список файлов на пакетную обработку
Function ScanFolder()
Dim sFolder As String, sFiles As String
Dim str As String
Dim s() As String
'диалог запроса выбора папки с файлами
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Function
sFolder = .SelectedItems(1)
End With
sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
sFiles = Dir(sFolder & "*.xls*")
str = ""
Do While sFiles <> ""
'сохраняем полный путь в массив строк
If str = "" Then str = sFolder & sFiles Else str = str & "^" & sFolder & sFiles
sFiles = Dir()
Loop
s = Split(str, "^")
ScanFolder = s
End Function
Sub Замена()
Dim fls() As String 'файлы на обработку
Dim sFld As String 'запрашиваем адрес папки на сохранение
Application.ScreenUpdating = False
fls = ScanFolder()
'sFld = GetFolder("E:\Скрипты")
For Each f In fls()
'открываем книгу в новом окне
Set ww = Application.Workbooks.Open(f)
'ищем текст на земену и заменяем
Set fnd = ww.ActiveSheet.Range("B1")
Set zam = ww.ActiveSheet.Range("B2")
ww.ActiveSheet.UsedRange.Replace fnd.Value, zam.Value
Application.DisplayAlerts = False
ww.Save
ww.Close
Application.DisplayAlerts = True
Next f
Application.ScreenUpdating = True
End Sub
|