Я подозреваю, что ошибка может быть вызвана тем, что одновременно открываются различные варианты Word. Чтобы исключить эту возможность, я рекомендую разобраться в способах работы с Word и документами. Логика c вашего кода немного запутана. Пожалуйста, попробуйте это вместо этого.
On Error Resume Next
Set Wd = GetObject(, "Word.Application")
If Err Then Set Wd = CreateObject("Word.Application")
On Error Resume Next
Set ObjDoc = Wd.Documents(Filename)
If Err Then Set ObjDoc = Wd.Documents.Open(FilePath & "\" & Filename)
On Error GoTo 0
Интересно, зачем вам нужно Wd.Visible = True
. Это должно быть видно по умолчанию. Возможно, окно не ActiveWindow, однако. На самом деле Word не может быть активным приложением. Я не думаю, что это имеет значение для кода.
Но это должно иметь большое значение для объекта Selection
. Только ActiveWindow может иметь Selection
. Поэтому, если у вас есть Excel, откройте и запустите код, вы не сможете получить доступ к объекту Selection
в Word. И наоборот, если вы откроете Word и сделаете выбор, а затем перейдете в Excel, объект Selection
будет потерян. Это также может привести к фатальной ошибке. Просто следуйте правилу: «Никогда Select
ничего в VBA [до последней строки вашего кода].