Автор Тема: Пакетный поиск и замена строк по файлам из папки  (Прочитано 465 раз)

Оффлайн Посетитель 24.10.2022

  • Посетитель форума
  • Сообщений: 1
Есть папка с документами, в которых нужно изменить ФИО, ИНН и подпись.
Порядок действий.
1) Открываю файл с макросом, там 4 поял, из которых я тяну текст и заменяю на него в нужных файлах
2) В папке лежат шаблоны с униальным текстом, который я хочу изменить (зарание ставлю уникальные имена, что его легко найти)

Вот мой код, в чем косяк?

Макрос
Sub FreeBooksOpen()
   
    'чтение того, что нужно заменить
   
    Dim fio As String
    Dim inn As String
    Dim fiosec As String
    fio = Cells(1, 2)
    inn = Cells(2, 2)
    fiosec = Cells(2, 2)
   
    'открытие нового файла
   
    Dim MyPath As String, MyName As String, FN As String
   
    MyPath = Cells(4, 2)
    MyName = Dir(MyPath & "\" & "*.xlsx")
    'тут может быть косяк
    Do While MyName <> ""
        FN = MyPath & "\" & MyName
        Excel.Application.Workbooks.Open FN
        MyName = Dir
       
        'замена ФИО
       
        With Workbooks(FN).Worksheets(Лист1).Range("A1:A50")
        Set c = .Find("fio", LookIn:=xlValues)
          Do While Not c Is Nothing
            c.Value = fio
            Set c = .FindNext(c)
            Loop
        End With
       
       
       'замена ИНН
        With Workbooks(FN).Worksheets(Лист1).Range("A1:A50")
        Set c = .Find("inn", LookIn:=xlValues)
          Do While Not c Is Nothing
            c.Value = inn
            Set c = .FindNext(c)
            Loop
        End With
       
        'замена ФИО на подписи
       
        With Workbooks(FN).Worksheets(Лист1).Range("A1:A50")
        Set c = .Find("fiosec", LookIn:=xlValues)
          Do While Not c Is Nothing
            c.Value = fiosec
            Set c = .FindNext(c)
            Loop
        End With
       
       
        'Workbooks(FN).Worksheets("Лист1").Cells (1.2)
       
        'Закрытие с записью
       
       Workbooks(FN).Close SaveChanges:=True
    Loop
     
End Sub

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Ошибка здесь: Workbooks(FN).Worksheets(Лист1).Range("A1:A50")
А именно здесь: Worksheets(Лист1). Имя листа нужно заключить в кавычки: Worksheets("Лист1")