Всем здравствуйте!
Суть скрипта:
Ищем файлы в папке меняем в них данные. И Все это по циклу. В каких папках искать и на что менять берём из exel.xlsm
Проблема:
Без циклов скрипт работает хорошо. Делает 2-4 цикла тоже хорошо. Но в какой-то момент слетает и выдает ошибку: Variable must be of type "Object" (есть подозрение что после определённо количества замен)
Сам скрипт:
Скрин ошибки:
Суть скрипта:
Ищем файлы в папке меняем в них данные. И Все это по циклу. В каких папках искать и на что менять берём из exel.xlsm
Проблема:
Без циклов скрипт работает хорошо. Делает 2-4 цикла тоже хорошо. Но в какой-то момент слетает и выдает ошибку: Variable must be of type "Object" (есть подозрение что после определённо количества замен)
Сам скрипт:
Код:
;ДАННЫЕ
#include <Excel.au3>
#Include <File.au3>
$Povtor = InputBox("Колличество цыклов","Введите колличество цыклов") ;Количество цыклов
For $j = 1 To $Povtor
;==============================================================================
;ЗАПУСК EXCEL
Local $oAppl = _Excel_Open()
$BookAvto=_Excel_BookOpen($oAppl, @ScriptDir & '\Exel.xlsm')
;Определение переменных из Excel
$BookAvto.Worksheets("Лист1").Range("A1").Select ;Выбираем ячейку
$BookAvto.ActiveSheet.Application.Run("Копировать") ;Копируем ячейку в буфер обмена
$Papka=ClipGet() ;Присваиваем значение перемнной из буфера
$BookAvto.Worksheets("Лист1").Range("A1").Select ;Выбираем ячейку
$BookAvto.ActiveSheet.Application.Run("Копировать") ;Копируем ячейку в буфер обмена
$Zamena=ClipGet() ;Присваиваем значение перемнной из буфера
MsgBox(0, 'Циклы - ПРОЦЕСС', 'Номер цыкла: '&$j&' из '&$Povtor&'', 1)
;==============================================================================
;ПОИСК И ЗАМЕНА В ФАЙЛАХ
_FindFiles_1('C:\Песочница\'&Papka&'', '*.*') ;Замена в *.htm
;==============================================================================
;УДАЛЕНИЕ СТРОКИ EXEL
Local $oAppl = _Excel_Open()
$BookAvto=_Excel_BookOpen($oAppl, @ScriptDir & '\Exel.xlsm')
$BookAvto.ActiveSheet.Application.Run("Сместить") ;Сместить
Sleep(100)
Next
MsgBox(0, 'Циклы - КОНЕЦ', 'КОНЕЦ!' & @CR & 'Сделано цыклов: '&$Povtor&'')
;ФУНКЦИЯ ПОИСКА И ЗАМЕНЫ
Func _FindFiles_1($sRoot, $sFile)
Local $FileList
$FileList = _FileListToArray($sRoot, $sFile, 1)
If Not @error Then
For $i = 1 To $FileList[0]
ConsoleWrite($sRoot & '\' & $FileList[$i] & @CR)
$Read = FileRead($sRoot & '\' & $FileList[$i]) ;Считываем файл
$Replace = StringRegExpReplace($Read, 'Что нужно заменить', $Zamena ) ;Делаем изменение
FileDelete($sRoot & '\' & $FileList[$i]) ;Удаляем файл
FileWrite($sRoot & '\' & $FileList[$i], $Replace) ;На его место записываем измененный файл
Next
EndIf
$FileList = _FileListToArray($sRoot, '*', 2)
If Not @error Then
For $i = 1 To $FileList[0]
_FindFiles_1($sRoot & '\' & $FileList[$i], $sFile)
Next
EndIf
EndFunc
Скрин ошибки: