メアリーは、テーブルを分割するマクロを書いています。アクティブなテーブルでの作業はそれほど問題ではありませんが、アクティブなテーブルの最初の行をコピーしてからテーブルを分割し、最後にコピーした行を分割によって作成された新しいテーブルの最初の行に貼り付けたいと考えています。これを適切に行うために、彼女は、WordがTablesコレクション内の2つのテーブルを参照するために使用するインデックス番号を決定したいと考えています。メアリーは、(分割前に)アクティブなテーブルのインデックス番号を見つける方法を知りたいので、その番号をインクリメントするだけで、分割後に作成されたテーブルの新しいインデックス番号を知ることができます。

Wordのオブジェクトモデルは、個々のオブジェクトをプログラムでアクセスできるコレクションに編成することに依存しています。これは、テーブルだけでなく、段落、グラフィックス、およびその他の多くのオブジェクトにも当てはまります。

Countプロパティを使用すると、コレクション内のオブジェクトの数を簡単に見つけることができます。たとえば、次を使用して、Tablesコレクション内のオブジェクトの数を返すため、ドキュメント内のテーブルの数を見つけることができます。

iNumTables = ActiveDocument.Tables.Count

現在のテーブルを見つけるのは少し難しいですが、それは可能です。最も簡単な方法は、現在のテーブルにブックマークを追加してから、ドキュメント内のすべてのテーブルを調べて、そのブックマークが含まれているテーブルを確認することです。それがわかれば、どのテーブルが現在のテーブルであるかがわかり、ブックマークを削除できます。次のマクロは、これらの手順を実装します。

Sub FindTableNumber()

Dim J As Integer     Dim iTableNum As Integer     Dim oTbl As Table

Selection.Bookmarks.Add ("TempBM")

For J = 1 To ActiveDocument.Tables.Count         Set oTbl = ActiveDocument.Tables(J)

oTbl.Select         If Selection.Bookmarks.Exists("TempBM") Then             iTableNum = J             Exit For         End If     Next J     ActiveDocument.Bookmarks("TempBM").Select     ActiveDocument.Bookmarks("TempBM").Delete     MsgBox "The current table is table " & iTableNum End Sub

マクロを使用するには、挿入ポイントが目的のテーブル内にあることを確認してください。マクロは、テーブルが分割されたり操作されたりするような、より大きなコンテキストに簡単に適合させることができます。

ただし、Maryが達成したい基本的なアクションをプログラムで処理する別の方法があります。それは、Tablesコレクションにインデックス番号を使用する必要がない方法です。テーブルの最初の行をコピーしてから、次のようなコマンドを使用してテーブルを分割できます。

Selection.Tables(1).Split(5)

このコマンドは、行5でテーブルを分割します。分割する行を変更することで、分割ポイントを簡単に変更できます。次に、次のコマンドを使用して、挿入ポイントを次のテーブル(新しく作成されたテーブル)の先頭に移動できます。

Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext

このコマンドは次のテーブルの先頭にジャンプし、前にコピーしたヘッダー行を貼り付けることができます。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(10897)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice 365のWordに適用されます。このヒントのバージョンは、ここにWordの古いメニューインターフェイス: