Word テンプレートに複数のテーブルがあり、それぞれを別の方法で変更する必要があります。また、どちらか一方が削除または挿入される可能性があるため、5 番目が常に同じであるとは言えません。
ID を保存する必要があるため、.ID 値を使用できません。
VSTO で特定のテーブルを識別する方法はありますか? VSTOなしでドキュメントにも設定できる好ましいもの。
同様の問題に遭遇しました。この問題を解決するために、Word tamplate でテーブルのタイトルを設定し (右クリック テーブル -> テーブル プロパティ... -> 代替テキスト -> タイトル)、Word 文書内のすべてのテーブルでタイトルを検索します。以下は、テーブルを検索するために使用したコードです。
public static Table getTable(Document doc, String title){
int totalTables = doc.Tables.Count;
Microsoft.Office.Interop.Word.Table ret = null;
for (int i = 1; i <= totalTables; i++){
if (title.Equals(doc.Tables[i].Title, StringComparison.OrdinalIgnoreCase)){
ret = doc.Tables[i];
break;
}
}
return ret;
}
私はそれを行う方法を見つけました:
Word で表をマークし、ブックマークを追加します。テーブルを識別できるように、一意の名前を選択する必要があります。識別は、次のような方法で行うことができます。
public Word.Bookmark GetBookmark(String bookmarkName)
{
// Find bookmark
Word.Bookmark bookmark = null;
foreach (Word.Bookmark curBookmark in Globals.ThisDocument.Bookmarks)
{
if (curBookmark.Name.Equals(bookmarkName))
{
bookmark = curBookmark;
break;
}
}
return bookmark;
}
表の代替テキストを識別子として使用することはできますか?
以下のコードを使用してそれらを取得します (ここからコピーされたコード)
Word.Application wdApp = Application;
Word.Document wdDoc = wdApp.ActiveDocument;
Word.Table wdTable = wdDoc.Tables[1];
MessageBox.Show(wdTable.Title + "\n" + wdTable.Descr);