8

Windowsフォームアプリケーションで次のコードを試しています。何が間違っているのかわかりませんが(Word APIの経験があまりないため、簡単に間違っている可能性があります)、GoToコマンドでブックマークを見つけることができません。最後の行に「このブックマークは存在しません」というCOMExceptionが常に発生します。

しかし、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);
4

2 に答える 2

9

ブックマークオブジェクトを使用してみませんか?

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

ウィンドウがそこでスクロールするかどうかは確認しませんでした...しかし、これで開始できます。


編集:これは、Goto->Bookmarkマクロを実行したときに記録されるVBコードです。

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

Type.Missing for whichItemとCountを渡して、VB呼び出しを複製しようとしましたか?

于 2009-10-29T20:35:40.927 に答える