2014-02-06 3 views
1

Я не очень привык к языку VBA, поэтому я прихожу к вам за помощью в решении моей проблемы.VBA - Documents.Activate функция не работает должным образом

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

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

Вот мой код:

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, а затем закрывает основной шаблон.

ответ

1

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

  • Создать окно
  • Рендер копию представленной (или Normal, в данном случае) шаблон
  • отображения в окне
  • Поднимите индекс всех открытых документов на 1
  • Присвоить индекс 1 вновь добавленному документу
  • Привести окно вперед и сфокусироваться на нем

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

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 
Смежные вопросы