2011-06-28 7 views
0

私はブックマークを使用してWordにテキストを送信するためにAccessを使用しています。ヘッダーとフッターにブックマークがありますが、テキストを送信しようとするとエラーが表示されます。 "Wordは要求されたブックマークを見つけることができません。アクセス:Wordオートメーションヘッダーとフッター

私はOffice 2003のファイル形式を使用しています

' 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 

にアクセスするためにテキストを送信するには、次のコードを使用しています。

+0

あなたはそれがあなたのブックマーク見つかったかどうかを確認するために、Word文書内のマクロとして、これを実行してみてくださいことができます: 'サブGotoHeaderBookmarkを() ActiveDocument.Bookmarks.Exists(「テスト」)の場合は、trueの場合、 のActiveDocumentを= .Bookmarks( "test")を選択します。 End If End Sub' – NickHeidke

+0

"test"をブックマークの名前に置き換えると、ドラフトモードに変わり、ブックマーク付きのヘッダー/フッタードッキングウィンドウが開きます。 – Rick

+0

ヘッダー/フッターに必要なフィールドは、すでに別のブックマークに送信されています。とにかく、私はおそらくフィールドを使うことができますか? – Rick

答えて

1

まず、すべてのWordブックマークが一意であることを確認する必要があります。 WordのオートメーションエンジンとしてAccessを使用していますが、これは簡単な間違いです。疑問がある場合は、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 objDoc = WordApp.Documents.Add Template:= strTemplateLocation、NewTemplate:= False" – Rick