はじめての親子ハイキングに挑戦!! >>

Wordファイルを操作していると、現在の行番号と桁番号を
画面下で確認できると思います。
5行11桁というように。

これをマクロで取得したいのですが、
どのようにしたら取得できるでしょうか?

画面にコマンドボタンを配置しているのですが、
ボタンを押下する直前にいた場所を取得したのです。

もしご存知でしたら、ご教示ください。
よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

行列の現在位置を取得


http://oshiete1.goo.ne.jp/qa3751458.html

こちら↑のマクロから検索(Search)関係を削除して使えるかと思います
ので、参考にしてはいかが。
    • good
    • 1
この回答へのお礼

ありがとうございます。
大変参考になりました。

お礼日時:2008/11/25 10:12

とりあえず


現在の行番号 は
Sub test026()
MsgBox Selection.Information(wdFirstCharacterLineNumber)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
行番号から桁番号も調べられました。
助かりました。

お礼日時:2008/11/25 10:13

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMS Office Word のマクロで行列の現在位置を取得したいのですが?

Wordで、マクロを組んで、文書から必要箇所を抽出したいと思います。
SelectionオブジェクトのFindプロパティーで文字を検索し、その検索した文字の行、列位置を数値として取得したいのですが、方法が分かりません。
教えて頂ければ幸いです。
【技術者向け】コンピューターで質問しましたが、カテゴリーがずれていたのか回答頂けませんでした。よろしくお願いします。

Aベストアンサー

こんばんは。

いまいち、質問の意味が理解できていないのです。

>SelectionオブジェクトのFindプロパティーで文字を検索し、その検索した文字の行、列位置を数値として取得したいのですが、方法が分かりません。

行と列は、Cells プロパティで、Table がないと、存在しません。
もし、Table があれば、文字検索で「行と列」が、出てくるのでしょうけれども、そうではないような気がします。

それと、本来は、検索して現在位置(行と桁)を取得するマクロは見当たらないのは、この種のFind を使ったマクロは、それ自体が作業本位で、情報取得の目的には、Wordの場合は、あまりしないのだと思います。ステータスバー(画面下)に出てくるからですが。

もし、以下のマクロの解釈が違うようなら、また、レスを付けてください。


'-------------------------------------------------------

Sub TestMacro1()
  Dim myRange As Range
  Dim mySearch As String
  Dim a As Long, b As Long
  mySearch = InputBox("探す文字を入力してください", "検索")
  If mySearch = "" Then Exit Sub
  
  Selection.Find.ClearFormatting
  
  With Selection.Find
   '以下を省略すると誤動作が出る可能性があります。
   '必要ならオプションを入れてください。
    .Text = mySearch
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
  End With
  Selection.Find.Execute
  Set myRange = Selection.Range
  With myRange
    '行
    a = .Information(wdFirstCharacterLineNumber)
    '桁
    b = .Information(wdFirstCharacterColumnNumber)
  End With
  MsgBox a & " 行 " & b & " 桁"
End Sub

こんばんは。

いまいち、質問の意味が理解できていないのです。

>SelectionオブジェクトのFindプロパティーで文字を検索し、その検索した文字の行、列位置を数値として取得したいのですが、方法が分かりません。

行と列は、Cells プロパティで、Table がないと、存在しません。
もし、Table があれば、文字検索で「行と列」が、出てくるのでしょうけれども、そうではないような気がします。

それと、本来は、検索して現在位置(行と桁)を取得するマクロは見当たらないのは、この種のFind を使ったマ...続きを読む

QWORD VBA 繰り返し処理

WORD VBAについて教えてください。

つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか?

Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "あ"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = True
End With
Selection.Find.Execute
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub

WORD VBAについて教えてください。

つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか?

Sub Macro1()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "あ"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
...続きを読む

Aベストアンサー

こんにちは。

>繰り返し処理の書き方を知りたい
それは、サンプルが良くないですね。
直接の回答にはならないかもしれませんが、こういうのはどうかしら?

Sub SampleTest1()
Dim blnFound As Boolean
Dim rngContent As Range
Dim intCount As Integer

blnFound = True
Set rngContent = ActiveDocument.Content
intCount = 0

Do While blnFound = True
  With rngContent.Find
    .ClearFormatting
    .Wrap = wdFindStop
    .Text = "あ"
    .Execute
  End With
  blnFound = rngContent.Find.Found
  If blnFound = True Then intCount = intCount + 1
Loop
MsgBox (intCount & "個見つかりました。")
End Sub

こんにちは。

>繰り返し処理の書き方を知りたい
それは、サンプルが良くないですね。
直接の回答にはならないかもしれませんが、こういうのはどうかしら?

Sub SampleTest1()
Dim blnFound As Boolean
Dim rngContent As Range
Dim intCount As Integer

blnFound = True
Set rngContent = ActiveDocument.Content
intCount = 0

Do While blnFound = True
  With rngContent.Find
    .ClearFormatting
    .Wrap = wdFindStop
    .Text = "あ"
    .Execute
  End...続きを読む

QWordVBAで規定のところに文字列を挿入したい

 VBA超初心者の質問です。
 ExcelVBAでは値をセルに代入することは出来ますが、WordVBAで規定の場所に文字列を代入するといったことはどうすれば良いのでしょうか?
 できれば、テキストボックスの中身と連動できたらと思うのですが、できますか?
 ちなみに、私はVBAはほとんど知識がありません。
 ただ単にVBAの勉強の手始めにこれだけ教えてください。
 Web検索しても見つからないので、よろしくお願いします。

Aベストアンサー

私もワードのVBAは初心者です。
(テキストボックスの作り方・値のセットのし方)
値は手動でなく、プログラムでセットする方法です。
Sub test05()
ActiveDocument.Shapes.AddTextbox _(msoTextOrientationHorizontal,100 ,100,100,100).Select
Selection.TypeText Text:="東京都文京区"
End Sub
100,・・のところは、Left,Top,Width,Heightの指定です。ワードに貼り付けるコントロールはShapesでまとめられていて、エクセルなどと違うようです。
(所定のところへテキストボックスの値をセットのし方)
「所定のところ」と言うのが、ワードの場合は曲者なような気がする。取りあえず何行目の何文字目と言う指定を知りましたので、記します。
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox TextBox1.Text
Selection.MoveDown unit:=wdLine, Count:=3
Selection.MoveRight unit:=wdCharacter, Count:=8
Selection.TypeText Text:=TextBox1.Text
End Sub
テキストボックスのイベントを、どれで捕らえるかが難しいが、比較的人為的にしないと起こらないダブルクリックにしました。
テキストボックス内に文字を入れ、テキストボックス内で
ダブルクリックすると3行下の該当文字から8文字目に
入力文字が挿入されます。
ワードのVBAは(1)解説書が少ない。(2)エクセルのように、Cell(Range)に当たる基本的な単位に当たるものが、見つからない。(3)エクセル・アクセスVBAと統一されていない(4)ビジネスなどで利用応用出来る場面が良く見えない。など学習は苦難の道が待っている気がします。OKWEBの質問も回答も少ないようです。お互いに頑張りましょう。

私もワードのVBAは初心者です。
(テキストボックスの作り方・値のセットのし方)
値は手動でなく、プログラムでセットする方法です。
Sub test05()
ActiveDocument.Shapes.AddTextbox _(msoTextOrientationHorizontal,100 ,100,100,100).Select
Selection.TypeText Text:="東京都文京区"
End Sub
100,・・のところは、Left,Top,Width,Heightの指定です。ワードに貼り付けるコントロールはShapesでまとめられていて、エクセルなどと違うようです。
(所定のところへテキストボックスの値をセットのし方...続きを読む

Qワードのマクロで段落番号(文字も含む)取得ってできますか

ワードのマクロで現在のページの段落番号(文字も含む)取得方法ってありますでしょうか。

たとえば、P.3に下記の段落番号があります。
1.1 あいうえおかきくけこ

現在3ページをみています。

マクロで現在表示している段落番号「1.1 あいうえおかきくけこ」を
取得する方法がありましたら教えていただけますでしょうか。

案外ワードのマクロの勉強サイトってエクセルに比べて
少ないんですね。。。

Aベストアンサー

こんばんは。

現在見ているページの指定がちょっと難しいですね。ExcelのようにActiveSheet とは行きません。他にあるのかもしれませんが、Wordのページの概念は物理的に取るしかなかったような気がします。

単に、その場所(Selection)の段落番号の取得というなら簡単ですが、そういう質問ではないような気がします。勝手かもしれませんが、これ以上の手間はあまり取りたくないので、ここまでにさせてください。現実、テキストを取るなら、その全てを、Text で取得し加工するなら可能ですが、段落やら章やら、Wordは良く分かりません。

Sub TestMacro()
Dim a As String
Dim b As String
 With Selection.Paragraphs(1).Range
   a = .ListFormat.ListString
   b = .Text
 End With
 MsgBox a & " " & b
End Sub


>案外ワードのマクロの勉強サイトってエクセルに比べて少ないんですね。。。

大野悟さんという方が本を出していらっしゃいますが、総じて、あまり上級のものは多くないようです。しかし、VBAの上級を目指すとなると避けては通れないので、英文しかないのが、頭が痛いところです。

以下のサイトも内容的には簡単なものが多いです。私たちの世界では、2バイト1バイト(ANSI)混在ですから、ややこしいです。どういうわけか、以前、デフォルトが、Unicode からJISに戻っているようで、どうも良く分からないですね。

私の利用しているところです。
http://word.mvps.org/FAQs/MacrosVBA/index.htm

MSサポートのほうにもサンプルコードはあるのですが、やはりあまり大したものはないようです。

こんばんは。

現在見ているページの指定がちょっと難しいですね。ExcelのようにActiveSheet とは行きません。他にあるのかもしれませんが、Wordのページの概念は物理的に取るしかなかったような気がします。

単に、その場所(Selection)の段落番号の取得というなら簡単ですが、そういう質問ではないような気がします。勝手かもしれませんが、これ以上の手間はあまり取りたくないので、ここまでにさせてください。現実、テキストを取るなら、その全てを、Text で取得し加工するなら可能ですが、段落やら章やら...続きを読む

QCell内の一部を指定する方法(Word VBA)

Cell内の一部を指定する方法(Word VBA)
Word VBAで、特定のCellの中の一部だけを指定するには、どうすればいいのでしょうか。
たとえば、ある表のCell(1, 2)の6~10文字目を指定して、そこだけを太字にするために、
Set Date1 = Table1.Cell(1, 2).Range(Start:=5, End:=10)
としても、RangeメソッドはCellに使えないようなので、エラーになってしまいます。

Aベストアンサー

> RangeメソッドはCellに使えないようなので

WordのVBA編集画面のオブジェクトブラウザで確認しますと、

Document.Range メソッド → Start:, End: で範囲を指定できる
Cell.Range プロパティ(メソッドではない)→ Start: End: の範囲指定はできない
事がわかります。ご指摘の通りです。

それで、
  Dim 範囲 As Range
  Set 範囲 = ThisDocument.Tables(1).Cell(2, 3).Range
  Debug.Print 範囲.Start; 範囲.End
などとしてみますと、この Range はセルではなく、
セクションの頭からの位置として、Start, End を持っていることがわかります。

そこで
  Set 範囲 = ThisDocument.Tables(1).Cell(2, 3).Range
  範囲.End = 範囲.Start + 10
  範囲.Start = 範囲.Start + 6 - 1' ★注意★ -1 が必要
  範囲.Font.Color = wdColorRed
  Debug.Print 範囲.Text

としてみると、うまくいきました
(ここでは太字ではなく赤字にしていますが、おなじことです)

> RangeメソッドはCellに使えないようなので

WordのVBA編集画面のオブジェクトブラウザで確認しますと、

Document.Range メソッド → Start:, End: で範囲を指定できる
Cell.Range プロパティ(メソッドではない)→ Start: End: の範囲指定はできない
事がわかります。ご指摘の通りです。

それで、
  Dim 範囲 As Range
  Set 範囲 = ThisDocument.Tables(1).Cell(2, 3).Range
  Debug.Print 範囲.Start; 範囲.End
などとしてみますと、この Range はセルではなく、
セクションの頭からの位置とし...続きを読む

QWORD VBA 表の複数行選択を教えてください

検索をしてみたのですが、うまく見つけられません。
ご存知の方がいらっしゃいましたら教えてください。

ActiveDocument.Tables(1).Rows(1).Select

これですと文書上1つ目の表の1行目が選択されますが、
たとえば1~3行目を選択したい場合はどうすればいいのでしょうか?

よろしくお願いいたします。

Aベストアンサー

ワードのSelectからrangeへ広げる考え方からすると
マクロの記録で出る
Sub test01()
ActiveDocument.Tables(1).Rows(1).Select
Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
end Sub
ワードの定めた単位(例Unit:=wdLine)で広げていく(Extend:=wdExtend)ような感じで
実現するのかなと思う。
エクセルのようにRange(Cells(・・),Cells(・・))やEntirerowはできないようです。
Sub test07()
ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Select
Selection.EndKey Unit:=wdRow, Extend:=True
Selection.MoveDown Unit:=wdLine, Extend:=True
Selection.MoveDown Unit:=wdLine, Extend:=True
End Sub
もどうですか。

ワードのSelectからrangeへ広げる考え方からすると
マクロの記録で出る
Sub test01()
ActiveDocument.Tables(1).Rows(1).Select
Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
end Sub
ワードの定めた単位(例Unit:=wdLine)で広げていく(Extend:=wdExtend)ような感じで
実現するのかなと思う。
エクセルのようにRange(Cells(・・),Cells(・・))やEntirerowはできないようです。
...続きを読む

Qワードマクロで画像を選択する方法

「図の挿入」を使って画像ファイルから読み込んで貼り付けた画像を、ワードマクロで選択したいと思っています。
どのようなコードを書けばいいか、教えてください。

ちなみに、以前どなたかがされた質問に対する回答(http://oshiete1.goo.ne.jp/qa2224793.html)で
ActiveDocument.Content.ShapeRange.Select
を使うという方法が提示されていましたが、「図の挿入」で読み込んだ画像ファイルには使えないようです。

よろしくお願いします。

Aベストアンサー

#1のご回答がありますが
私も判らずながらやってみました。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd11/html/woobjInlineShapes1.asp
にInlineShapes の説明があります。
ーー
まずエクセルの操作で、挿入ー図ーファイルからでファイル名を指定します。
するとInlineShapes のオブジェクトになるようで、
Sub test02()
For Each ishape In ActiveDocument.InlineShapes
ishape.ConvertToShape
Next ishape

End Sub
を実行するとShape オブジェクトに変換できます。
Sub test01()
Dim pc As Object
Dim ishape As Object
MsgBox ActiveDocument.Shapes.Count
MsgBox ActiveDocument.InlineShapes.Count
For Each pc In ActiveDocument.Shapes
MsgBox pc.Name
Next
End Sub
を実行しますと
メッセージボックスで2と0がでて
Picture 6
などと表示できます。
Sub test03()
ActiveDocument.Shapes("Picture 6").Select
Selection.Delete
End Sub
で削除できました。
ーーー
InlineShapeを捉える件ですが
http://www.keep-on.com/excelyou/2001lng4/200112/01120012.txt
に書いておられますが
Indexでしか捕らえられないのかもしれません。
Sub test04()
MsgBox ActiveDocument.InlineShapes.Count
n = ActiveDocument.InlineShapes.Count
For i = 1 To n
MsgBox ActiveDocument.InlineShapes(i).Height
Next i
End Sub
私もNameでやってみましたができませんでした。
他に方法があるのかどうかわかりません。
Shapes->InlineShapeは選択したものにつき
Sub ConvertToInlineShape()
With Selection
' \\ If we selected a Shape then convert to InlineShape
If .Type = wdSelectionShape Then
.ShapeRange(1).ConvertToInlineShape
End If
End With
End Sub
というコードを見つけました。
Pictureの判別は
Sub test05()
Dim inlineShape
For Each inlineShape In ActiveDocument.InlineShapes
If inlineShape.Type = wdInlineShapePicture Then
MsgBox inlineShape.Height
End If
Next
End Sub
を見つけました。

#1のご回答がありますが
私も判らずながらやってみました。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd11/html/woobjInlineShapes1.asp
にInlineShapes の説明があります。
ーー
まずエクセルの操作で、挿入ー図ーファイルからでファイル名を指定します。
するとInlineShapes のオブジェクトになるようで、
Sub test02()
For Each ishape In ActiveDocument.InlineShapes
ishape.ConvertToShape
Next ishape

End Sub
を実行するとShape オブジェクトに変換で...続きを読む

Qワードのカーソル位置を最終文末へ移動させる方法

ワードのカーソル位置を最終文末へ移動させる方法について教えてください。

数頁にわたるワード文書のファイルが多数、そのすべてのファイルの一番最後の行に同様の数行の注意書きをコピーペーストしていきたいのですが、ファイルを開いた後ページダウンキーを使って最後のページを表示してからペーストという作業をしておりますが時間がかかっております。

ワードファイル開けたときに一番先頭にあるカーソルを最終行まで即時に移動させるショートカットがあれば教えてください。

Aベストアンサー

パソコンによって違います
私のノートパソコンは、
文末 Fnキー+Ctrlキー+Endキー
文頭 Ctrlキー+Homeキー

Qエクセルからワードのマクロを実行したい

1. ワードで作られた報告書の表の数値をエクセルにコピーし、
2. その数値を使ってエクセルのオートシェイプでグラフを描き、
3. グラフをもう一度ワードの所定の位置に図として貼りつける、
というマクロを作成しています。ワードの表をコピーするマクロと、エクセルでグラフを描くマクロは作成できました。

問題はエクセルのシートに配置したコマンドボタンをクリックすると、グラフの入ったセル範囲をコピーするまではできたのですが、その後にワードのマクロを指定して実行させる方法がわかりません。
1.→2.のエクセルのマクロを実行する方はauto_openで何とかなったのですが、2.→3.は既にワード文書は開かれていますし、auto_openでは1.の手順ができなくなってしまうので困っています。
もし、エクセルのマクロでワードを操作などできるのでしたらそれでもよいのですが…。

ワードのマクロは初挑戦で、色々サイトも探したのですが見つかりませんでした…。

使用していますのは、Windows98SE,Excel97,Word97です。
ご存知の方、どうぞよろしくお願い致します。

1. ワードで作られた報告書の表の数値をエクセルにコピーし、
2. その数値を使ってエクセルのオートシェイプでグラフを描き、
3. グラフをもう一度ワードの所定の位置に図として貼りつける、
というマクロを作成しています。ワードの表をコピーするマクロと、エクセルでグラフを描くマクロは作成できました。

問題はエクセルのシートに配置したコマンドボタンをクリックすると、グラフの入ったセル範囲をコピーするまではできたのですが、その後にワードのマクロを指定して実行させる方法がわかりません。
...続きを読む

Aベストアンサー

ふむ、よくわからないんですけど
> エクセルからワードのマクロを指定して実行させることができますでしょうか?

だけでしたら、

Dim wdApp As Word.Application

Set wdApp = GetObject(, "word.application")
wdApp.Run "wdtest"

てな感じで、開いてる Word の wdtest というマクロが
Excel側から実行できます。

QExcelVBAで既に開いてるwordを閉じる

ExcelVBAで困っております。

現在Excelで住所録を作り、1度送付してから1ヶ月したら自動でwordを起動し
送付の印刷をするマクロを作ってます。

普通に開いて閉じることはできましたが、
既にwordが開いていた場合に読み込み専用になり、少し困っております。

理想としては、既に開いていた場合、1度保存して終了し、
再度開くようにしたいです。


分かる方がいらっしゃいましたら教えてください。

よろしくお願い致します。

Aベストアンサー

試してください。
(例)
Dim wdapp As Object
Dim wddoc As Object
Dim wdpath As String
Dim wdname As String

wdname = "abc.docx"

On Error Resume Next
Set wdapp = GetObject(, "Word.Application")
Set wddoc = wdapp.Documents(wdname)
On Error GoTo 0
If wddoc Is Nothing Then Set wdapp = Nothing: Exit Sub

wdpath = wddoc.FullName
wddoc.Save
wddoc.Close
wdapp.Documents.Open FileName:=wdpath, ReadOnly:=False

Set wdapp = Nothing: Set wddoc = Nothing

試してください。
(例)
Dim wdapp As Object
Dim wddoc As Object
Dim wdpath As String
Dim wdname As String

wdname = "abc.docx"

On Error Resume Next
Set wdapp = GetObject(, "Word.Application")
Set wddoc = wdapp.Documents(wdname)
On Error GoTo 0
If wddoc Is Nothing Then Set wdapp = Nothing: Exit Sub

wdpath = wddoc.FullName
wddoc.Save
wddoc.Close
wdapp.Documents.Open FileName:=wdpath, ReadOnly:=False

Set wdapp = N...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング