2014-02-06 186 views
1

我不是很習慣VBA語言,所以我來找你幫忙解決我的問題。VBA - Documents.Activate函數無法正常工作

基本上,我想要做的是在打開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文檔中打開它,然後關閉主模板。

回答

1

Documents.Add做些什麼:

  • 創建一個窗口
  • 渲染所提供的(或正常,在這種情況下)模板
  • 顯示它在窗口的副本
  • 升起所有打開的文檔索引爲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