Страницы: 1
RSS
Команда vba Replace не работает с данными, считанными из ячеек, Команда vba Replace не работает с данными, считанными из ячеек
 
Здравствуйте. Создал скрипт для пакетной замены одной фамилии на другую. Когда вбиваю в команду 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
 
Ваши макросы должны находиться в стандартном модуле, а не в модуле книги.
Ваш макрос открывает книгу из выбранной папки, берет в этой открытой книге на текущем листе значения ячеек B1 и B2 и делает на этом листе замену текстов (в том числе значение ячейки B1 поменяется на значение B2). Таков замысел?
Владимир
 
оператор Replace работает согласно правил написанных в его описании
он не может учитывать ВСЕ фантазии пользователя
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Читают тему (гостей: 2)
Наверх