2011-06-28 40 views
0

我正在使用Access通過書籤向Word發送文本。我在頁眉和頁腳中添加了書籤,但是當我嘗試將文本發送給它時出現錯誤:「Word無法找到請求的書籤。訪問:Word自動化頁眉和頁腳

我使用下面的代碼來發送文本

' Create a Word document from template. 
Dim WordApp As Word.Application 
Dim strTemplateLocation As String 
Dim myVariable = 「TEST!!」 

' Specify location of template 
strTemplateLocation = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & "test.dot" 

Set WordApp = GetObject(, "Word.Application") 
If Err.Number <> 0 Then 
    Set WordApp = CreateObject("Word.Application") 
End If 

WordApp.Visible = True 
WordApp.WindowState = wdWindowStateMaximize 
WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False 


' Replace each bookmark with field contents. 
WordApp.Selection.GoTo what:=wdGoToBookmark, Name:="myBookmark" 
WordApp.Selection.TypeText myVariable 

DoEvents 
WordApp.Activate 
Set WordApp = Nothing 

我使用Office 2003文件格式的訪問。

+0

你能嘗試運行此爲Word文檔中的宏,看它是否發現你的書籤:'子GotoHeaderBookmark() 如果ActiveDocument.Bookmarks.Exists(「測試」)= TRUE然後 的ActiveDocument 。書籤(「test」)。選擇 End If End Sub – NickHeidke

+0

將「test」替換爲我的書籤名稱,它將更改爲草稿模式並使用書籤打開頁眉/頁腳停靠窗口。 – Rick

+0

我想要在頁眉/頁腳上的字段已被髮送到另一個書籤。無論如何,我可以使用一個領域,也許? – Rick

回答

1

首先,您必須確保每個Word書籤都是唯一的。我們一直使用Access作爲Word的自動化引擎,這可能是一個很容易犯的錯誤。如果有疑問,請在您的Word模板中刪除您的書籤,然後放回原處。

以下是一些代碼,可幫助您順利完成任務。讓我們首先聲明一些變量,特別是一個Word文檔,以便與您的Word應用程序一起使用,因爲您是遲到的綁定。

Dim WordApp As Object 
Dim objDoc As Object 

,或者,如果你可以提前綁定...

Dim WordApp As Word.Application 
Dim objDoc As Word.Document 

接下來,你知道如何讓你的設置對象WordApp,但我把我的文檔對象給我更多的靈活性。

Set objDoc = WordApp.Documents.Add Template:=strTemplateLocation, NewTemplate:=False 

我通常有一個子例程中的下一部分,我只是在書籤名稱和值作爲字符串傳遞。再次,您可以將相同的變量發送到任意多個書籤,但是您必須在Word模板中具有唯一的書籤名稱。

If objDoc.Bookmarks.Exists(sBookmark) = True Then 

    objDoc.Bookmarks(sBookmark).SELECT 
    WordApp.Selection = sValue 

End If 

然後你似乎遇到了一些麻煩,當你打開它時你發現了Word。如果有這樣的事情,我更喜歡把事情恢復到「正常」。 :)

With WordApp 

    If .ActiveWindow.View.SplitSpecial <> 0 Then 
     .ActiveWindow.Panes(2).Close 
    End If 

    If .ActiveWindow.ActivePane.View.Type = 1 Or .ActiveWindow.ActivePane.View.Type = 2 Then 
     .ActiveWindow.ActivePane.View.Type = 3 
    End If 

    .ActiveWindow.ActivePane.View.SeekView = 0 

End With 
+0

在模板上的Set「Set objDoc = WordApp.Documents.Add Template:= strTemplateLocation,NewTemplate:= False」中獲取語法錯誤「Expected end of statement」 – Rick