VBA - Documents.Activate функция не работает должным образом

Я не очень привык к языку VBA, поэтому обращаюсь к вам за помощью в решении моей проблемы.

По сути, я хочу, чтобы при открытии документа MS Word 2010 открыть новый, установить на нем фокус и что-то с ним делать.

Проблема, с которой я столкнулся, заключается в том, что я могу эффективно открыть новый документ, но функция .activate для установки функции в нем не работает, поскольку следующие за ней инструкции по-прежнему выполняются в первом документе.

Вот мой код:

Private Sub BOK_Click()

*...instructions...*

'Opens a new document
Application.Documents.Add

'Select the latest opened document and sets the focus on it
Application.Documents(Application.Documents.Count).Activate

* do stuff *

End Sub

Если это может помочь, полный контекст таков: у меня есть основной шаблон с 6 предварительно заполненными шаблонами в нем, и после выбора пользователя (из раскрывающейся формы) он выбирает правильный предварительно заполненный шаблон и открывает его. в новом документе Word, затем закрыл основной шаблон.


person Morgan    schedule 06.02.2014    source источник


Ответы (1)


Что делает Documents.Add:

  • Создать окно
  • Визуализировать копию предоставленного (или в данном случае обычного) шаблона
  • Отобразить в окне
  • Поднимите индекс всех открытых документов на 1
  • Назначьте индекс 1 новому добавленному документу
  • Вынесите окно вперед и сфокусируйтесь на нем

(Обычно) нет необходимости явно активировать только что добавленный документ. Если вы должны или хотите использовать Activate, лучше всего ссылаться на документ по его имени, поскольку индексы имеют тенденцию дрейфовать (как описано выше).

doc1 = ActiveDocument.Name
Documents.Add
doc2 = ActiveDocument.Name
' Do something with document2
Documents(doc1).Activate
' Do something with document1
Documents(doc2).Activate
' Do something with document2 again
person Bwurk    schedule 06.02.2014