Для начала не указывайте все эти свойства снова и снова. Если вы не измените их, они не изменятся.
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
For loop to go through each word pair
.Text = SrcText
.Replacement.Text = DestText
.Find.Execute Replace:=wdReplaceAll
Next
End With
Минимизация Dots
Так что, если вы заинтересованы в выполнении минимизации точек (каждая точка является поиск), особенно в циклах.
Существует два способа. Один из них - установить объекты на самый нижний объект, если вы собираетесь получать доступ более одного раза.
например (медленнее)
set xlapp = CreateObject("Excel.Application")
msgbox xlapp.worksheets(0).name
(быстрее, потому что вы omitt точечно каждый раз, когда вы используете объект)
set xlapp = CreateObject("Excel.Application")
set wsheet = xlapp.worksheets(0)
msgbox wsheet.name
Второй путь с. У вас может быть только один с активным за раз.
Это пропускает 100 запросов.
with wsheet
For x = 1 to 100
msgbox .name
Next
end with
Строка Concatination
И не присоединившиеся строки один символ за один раз. См. Это от программиста VBScript. Для создания 100-символьной строки требуется 50 000 байт и много выделения и освобождения.
http://blogs.msdn.com/b/ericlippert/archive/2003/10/20/53248.aspx
Свойства Чтение
Не перечитать свойства, которые не изменяются, особенно если из процесса или поздно граница. Поместите их в переменную.
Типы объектов
Два понятия здесь - в или из процесса и рано или поздно вяжущие.
exefiles подключены к процессу. Все вызовы распределяются по RPC (сетевой протокол). Dllfiles находятся в процессе, а вызовы функций выполняются напрямую с помощью перехода.
Раннее связывание - set x = objecttype
. Функции вызывается, когда вы пишете программу. При выполнении программа жестко закодирована, чтобы перейти к адресу, сохраненному в таблице vtable для этой функции.
Late binding установлено x = createobject("objecttype")
. Каждый вызов функции происходит следующим образом. «Привет, у вас есть команда печати». «Да», он отвечает, «команда номер 3». «Привет, вы можете сделать команду номер 3». «Конечно, вот результат».
Из Visual Basic Concepts (часть справки)
Вы можете сделать ваши Visual Basic приложения работать быстрее за счет оптимизации способа Visual Basic устраняющее ссылки на объекты. На скорость, с которой Visual Basic обрабатывает ссылки на объекты, может влиять:
Независимо от того, был ли компонент ActiveX реализован в качестве встроенного сервера или внепроцессного сервера.
Является ли ссылка на объект ранней или поздней. В общем случае, если компонент был реализован как часть исполняемого файла (файл .exe), он является внепроцессным сервером и запускается в своем собственном процессе. Если он был реализован как библиотека динамической компоновки, он является in-process сервером и работает в том же процессе, что и клиентское приложение.
Приложения, использующие встроенные серверы, обычно работают быстрее, чем те, которые используют внепроцессные серверы, потому что приложение не должно пересекать границы процесса, чтобы использовать свойства, методы и события объекта. Дополнительные сведения о серверах в процессе и вне процесса см. В разделе «Серверы, находящиеся в процессе и вне процесса».
Ссылки на объекты ранней привязки, если они используют переменные объекта, объявленные как переменные определенного класса. Ссылки на объекты являются поздними, если они используют переменные объекта, объявленные как переменные общего класса Object. Ссылки на объекты, использующие ранние связанные переменные, обычно работают быстрее, чем те, которые используют поздние связанные переменные.
Excel Конкретная
Смотрите эту ссылку от человека Microsoft. Это скорее excel, чем VBA. Autocalc и другие варианты известково/ScreenUpdating и т.д.
http://blogs.office.com/2009/03/12/excel-vba-performance-coding-best-practices/
Конец клетки и конец таблицы характера. Вы даже можете увидеть их на картинке. – Noodles
@Noodles Спасибо, что указали это. Мне любопытно, почему «Персонажи» и «Лен» по-разному подсчитывают конец ячейки и конец символа таблицы. У вас есть какая-то подсказка?Кроме того, это единственный персонаж, который считается по-разному? – null