- 締切済み
Word のVBAについて初心者なのですが、質問があります。
Word のVBAについて初心者なのですが、質問があります。 ワード文書内の表について、カーソルのある位置の行番号や列番号を取得する方法は Informationを使用して取得することができるのはわかったのですが、 文書内にある、複数の表について、行番号や列番号のように、 カーソル位置の表番号って取得することができるのでしょうか? 文書内の複数の表の総数をActiveDocument.Tables.Countで数えることができるらしい というのはネットで調べてわかったのですが、現在選択されている(カーソル位置)表が 文章内の何番目の表なのかというのができるのかどうか・・・・。 きっとInformationのように一つのコードではなくて、いろいろ組み合わせて 数えるのではないかと推測しているのですが・・・・。 すみません、誰かわかる方がいらっしゃいましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
#1です。 ブックマークはその名の通り「しおり」です。 他のOfficeアプリケーションでも使います。 ブックマークの説明 http://www.beagle-hc.com/It_program_word0/Word1.html http://msdn.microsoft.com/ja-jp/library/aa288619%28VS.71%29.aspx http://support.microsoft.com/kb/182305/ja (上記はMacのWordですが内容はそのまま使えます) 質問が、 >カーソル位置の表番号って取得することができるのでしょうか? >文書内の複数の表の総数をActiveDocument.Tables.Countで >数えることができるらしい という条件を満たしたものであればということで、 質問のご要望に沿ってアクティブになっている表の 位置を求めるコードを提示した、という次第です。 それ以上のことはしていません。 オブジェクトが多いのですが、特に難しいという コードではなく、ごく単純なコードですから、 ごゆっくりお茶でも飲みながら眺めてください。 それと、 >あと、一番最後のSelectでTbkを選んで、Deleteする操作は、 >MsgBoxと何か関係があるのですか? これは、まずMsgBoxで何を表示しようとしているのか 見てください。「表は " & j & "番目"」の中の 「j」です。「j」はどこで取得していますか。 Selectして、DeleteしているのTbkと名づけたしおりです。 コードの終わりにいらないものは破棄するという プログラミングの作法に則ったものです。この 意味はプログラミングの中でいろいろな ことに遭遇すると自覚するようになります。 したがって何の関係もありません。 以上です。
- Wendy02
- ベストアンサー率57% (3570/6232)
ご質問では「カーソルのある位置の行番号や列番号」と「カーソル位置の表番号」を取得するということでしょうか?まあ、こんな所でしょうか。私のWordのVBAのコードが気に入らない人もいるかもしれませんが……。 '//ThisDocument に貼り付けてください。 Sub TableInfo() 'ネストされた表は、情報が出ません。 Dim sTbl As Table Dim Tbls As Tables Dim i As Long, col As Long, rw As Long On Error Resume Next Set sTbl = Selection.Tables(1) On Error GoTo 0 If sTbl Is Nothing Then MsgBox "表がないか、表を選択していません。", vbExclamation: Exit Sub If sTbl.NestingLevel > 1 Then MsgBox "ネストされた表は、表示できません。", vbExclamation: Exit Sub Set Tbls = ActiveDocument.Tables For i = 1 To Tbls.Count If sTbl.Range.Start = Tbls.Item(i).Range.Start Then col = sTbl.Range.Cells(1).Column.Index rw = sTbl.Range.Cells(1).Row.Index MsgBox "現在は、" & i & "番目の表で、" & rw & "行目の " & col & " 列目のセルを指しています。" End If Next Set sTbl = Nothing Set Tbls = Nothing End Sub
- piroin654
- ベストアンサー率75% (692/917)
どこかのサイトで見かけたのですが、 どこか忘れました。以下のような 感じです。 Sub GetSelectNumber() Dim i As Integer Dim j As Integer Dim tbl As Table Selection.Bookmarks.Add ("Tbk") For i = 1 To ActiveDocument.Tables.Count Set tbl = ActiveDocument.Tables(i) tbl.Select If Selection.Bookmarks.Exists("Tbk") Then j = i Exit For End If Next i ActiveDocument.Bookmarks("Tbk").Select ActiveDocument.Bookmarks("Tbk").Delete MsgBox "選択されている表は " & j & "番目" End Sub
お礼
返事が遅くなり申し訳ございません。 Bookmarksというコードがあるのをはじめて知りました・・・。 Bookmarksというのは、VBAのヘルプを見ても いまいち使い方がよくわからなかったのですが、 何か対象物を置いて、その対象物をチェックするということですか? あと、一番最後のSelectでTbkを選んで、Deleteする操作は、 MsgBoxと何か関係があるのですか? ん~~~~、Tbkという変数をAddってことは、 ブックマークに追加しているということでしょうか? 追加してそのブックマークを表の変わりに数えているということですかね? すみません、考えてはいるんですが、なんとなくという感覚でしかわからなくて。。。。
お礼
返事がおそくなり申し訳ございません。 表番号の取得方法だけでなく、一緒に行番号、列番号の取得もできるマクロを 教えて頂けるとは思ってもいなかったので、うれしいです。 ただ、VBAの初心者のため、解読に少し時間がかかりそうですが、 試してみます。解読中にわからないことがあったらまた、質問します。 ありがとうございました。