В вашем коде нет ничего неправильного. Слово медленно.
Разница может быть в процессе и вне процесса. Вызовы вне процесса выполняются с использованием процедуры удаленного вызова сети RPC. Скрытые окна создаются, чтобы сообщения могли быть получены. Это все очень сложно, поэтому внеплановые вызовы работают при любых обстоятельствах. В Process Calls это просто инструкция перехода по машинному коду. Несколько тактов против десятков тысяч и более.
Есть небольшие проблемы.
Эти строки бессмысленны. Это обрабатывается в конце каждой строки для неявных переменных и каждые end function
и т. Д. Для явных переменных. См. Объявление утечек памяти переменных
Set fso = Nothing
Set folder = Nothing
Set subfolder1 = Nothing
Set CurrFile = Nothing
Если вы хотите сделать это косвенное обращение, тогда они должны быть const
. Компилятор поместит их в строку, где они используются как литералы. Используйте переменные только там, где это необходимо.
strTextFind1 = "useful"
strFileFound = "test"
strExtension = ".doc"
So
const strTextFind1 = "useful"
const strFileFound = "test"
const strExtension = ".doc"
Вы опоздали с FSO. Используйте раннее связывание, как и для Word. См. Указатели, необходимые для ускорения макроса вложенного цикла в VBA . Затем вместо Dim folder As Object
уменьшите его, как вы делаете слово.