アプリ版:「スタンプのみでお礼する」機能のリリースについて

Word のVBAについて初心者なのですが、質問があります。

ワード文書内の表について、カーソルのある位置の行番号や列番号を取得する方法は
Informationを使用して取得することができるのはわかったのですが、
文書内にある、複数の表について、行番号や列番号のように、
カーソル位置の表番号って取得することができるのでしょうか?

文書内の複数の表の総数をActiveDocument.Tables.Countで数えることができるらしい
というのはネットで調べてわかったのですが、現在選択されている(カーソル位置)表が
文章内の何番目の表なのかというのができるのかどうか・・・・。
きっとInformationのように一つのコードではなくて、いろいろ組み合わせて
数えるのではないかと推測しているのですが・・・・。
すみません、誰かわかる方がいらっしゃいましたら教えてください。

A 回答 (3件)

#1です。



ブックマークはその名の通り「しおり」です。
他のOfficeアプリケーションでも使います。

ブックマークの説明
http://www.beagle-hc.com/It_program_word0/Word1. …
http://msdn.microsoft.com/ja-jp/library/aa288619 …
http://support.microsoft.com/kb/182305/ja
(上記はMacのWordですが内容はそのまま使えます)



質問が、

>カーソル位置の表番号って取得することができるのでしょうか?

>文書内の複数の表の総数をActiveDocument.Tables.Countで
>数えることができるらしい

という条件を満たしたものであればということで、
質問のご要望に沿ってアクティブになっている表の
位置を求めるコードを提示した、という次第です。
それ以上のことはしていません。

オブジェクトが多いのですが、特に難しいという
コードではなく、ごく単純なコードですから、
ごゆっくりお茶でも飲みながら眺めてください。


それと、

>あと、一番最後のSelectでTbkを選んで、Deleteする操作は、
>MsgBoxと何か関係があるのですか?

これは、まずMsgBoxで何を表示しようとしているのか
見てください。「表は " & j & "番目"」の中の
「j」です。「j」はどこで取得していますか。

Selectして、DeleteしているのTbkと名づけたしおりです。
コードの終わりにいらないものは破棄するという
プログラミングの作法に則ったものです。この
意味はプログラミングの中でいろいろな
ことに遭遇すると自覚するようになります。

したがって何の関係もありません。

以上です。
    • good
    • 0

ご質問では「カーソルのある位置の行番号や列番号」と「カーソル位置の表番号」を取得するということでしょうか?まあ、こんな所でしょうか。

私の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
    • good
    • 0
この回答へのお礼

返事がおそくなり申し訳ございません。
表番号の取得方法だけでなく、一緒に行番号、列番号の取得もできるマクロを
教えて頂けるとは思ってもいなかったので、うれしいです。
ただ、VBAの初心者のため、解読に少し時間がかかりそうですが、
試してみます。解読中にわからないことがあったらまた、質問します。
ありがとうございました。

お礼日時:2010/08/11 11:29

どこかのサイトで見かけたのですが、


どこか忘れました。以下のような
感じです。

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
    • good
    • 0
この回答へのお礼

返事が遅くなり申し訳ございません。
Bookmarksというコードがあるのをはじめて知りました・・・。
Bookmarksというのは、VBAのヘルプを見ても
いまいち使い方がよくわからなかったのですが、
何か対象物を置いて、その対象物をチェックするということですか?

あと、一番最後のSelectでTbkを選んで、Deleteする操作は、
MsgBoxと何か関係があるのですか?

ん~~~~、Tbkという変数をAddってことは、
ブックマークに追加しているということでしょうか?
追加してそのブックマークを表の変わりに数えているということですかね?

すみません、考えてはいるんですが、なんとなくという感覚でしかわからなくて。。。。

お礼日時:2010/08/11 11:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!