2009-10-29 27 views
5

私はWindowsフォームアプリケーションで次のコードを試しています。私は間違って何をしているのかわかりません(そして、私はWord APIで多くの経験がないので簡単に間違っているかもしれませんが)GoToコマンドはブックマークを見つけることができません。最後の行に「このブックマークは存在しません」というCOMExceptionが表示されます。Microsoft Word APIおよびブックマーク機能を使用して、プログラムでWord文書を特定の場所に開くにはどうすればよいですか?

しかし、wordDoc.Bookmarks.get_Item(ref name)メソッドではブックマークが見つかりません! 何がありますか?

Object fileName = System.Windows.Forms.Application.StartupPath + "\\Bookmarks.docx"; 
Object readOnly = false; 
Object isVisible = true; 
Object missing = System.Reflection.Missing.Value; 

Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); 
Microsoft.Office.Interop.Word.Document wordDoc = new Microsoft.Office.Interop.Word.Document(); 

wordApp.Visible = true; 
wordDoc = wordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing); 

Object item = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark; 
Object whichitem = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToFirst; 
Object count = 1; 
Object name = "Location3"; 

Bookmark bMark = wordDoc.Bookmarks.get_Item(ref name); 
wordDoc.GoTo(ref item, ref whichitem, ref count, ref name); 

答えて

7

Bookmarkオブジェクトの使用はどうですか?

object bookmarkName = "Location3"; 
    if (wordDoc.Bookmarks.Exists(bookmarkName.ToString())) 
    { 
     Bookmark bookmark = wordDoc.Bookmarks.get_Item(ref bookmarkName); 
     bookmark.Select(); 
    } 

ウィンドウがスクロールしていないかどうかはチェックしていませんが、これで起動するはずです。


EDIT:これは私がGoto->ブックマークマクロを実行するときに記録されたVBのコードです:

Selection.GoTo What:=wdGoToBookmark, Name:="Location3" 

あなたはWhichItemためType.Missingを渡して試してみてカウントので、複製しましたVBコール?

+0

Word.Applicationオブジェクトを使用して、後藤コマンドを使用します。 GoToコマンドで何が問題だったのかよく分かりません。私はそれのすべての組み合わせを試しました。 –

1

フィリップ・ウォレスの答えは素晴らしいです。

bookmark.Select()コマンドが魅力のように働いた

object What = Word.WdGoToItem.wdGoToBookmark; 
object oMissing = System.Reflection.Missing.Value;  
wordApp.Selection.GoTo(What, oMissing, oMissing, "bookMarkName"); 
+0

Application.Selection.GoToを使用してブックマークをページの上部に配置するのに対し、Bookmarkオブジェクトを使用すると、ブックマークを表示ページの下部に配置します(実際にはブックマークを表示するためにスクロールする必要があります)。 – Mike

関連する問題