• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 いまいち、質問の意味が理解できていないのです。 >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

psgrade
質問者

お礼

早速回答頂き、感謝に耐えません。 表現が悪く理解しにくかったかもしれませんが、ご回答が正に実施したかったことです。 早速、マクロに張り付けて、作動させて見ました。 これを組み込ませて頂いて、私のマクロは完成します。 ありがとう御座いました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Wordマクロで目に見える文字列だけを探すには

    Word2000のマクロで、目に見える文字列だけ(つまり空白・改行・タブなどは対象外)を探す方法はありますか。 操作をマクロに記録してみましたが、「任意の1文字」を選ぶと、改行とかの「目に見えない」文字まで検索されてしまいます。 そこで、 Selection.Find.ClearFormatting With Selection.Find .Text = "^?" の "^?" を、「目に見える文字列」を指す内容に変えられますか? それが無理なら、何かほかに簡単な方法はないでしょうか。 マクロは素人なので、複雑なことはできないです。 よろしくお願い致します。

  • ワードでマクロがうまくいきません。

    よろしくお願いします。 マクロの知識はほとんどないのですが、 「マクロの記録」の機能を使い、ワードで 「スペースを探し出し、そのスペースにアンダーラインを引く。」 ために、 -------------------- 編集ー置換ー 検索する文字列にスペースをタイプ、 置換後の文字列にスペースをタイプ、 オプションの書式で、フォント、下線、一重下線 すべて置換 -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 マクロの記録中の操作では、思い通りに置換されるのですが、 次にそのマクロを作動させると、なにもおこりません。 なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro2() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = " " .Replacement.Text = " " .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub -------------------- どうしてうまく動かないのでしょうか。 教えていただけるとありがたいです。よろしくお願いします。

  • Word2007のマクロについて

    こんにちは。 Word2007のマクロについて質問させて下さい。 ・タイトル行が(16738047)色で、本文が黒文字の日本語の文書があります。 ・タイトル行内でキーワード検索を行いたいです。 ・1個ずつ内容を確認したいので「次を検索」 MsgBoxを使用しています。 以下のコードを実行すると、単語が1個飛ばしに選択されてしまいます。 どこを変更すればいいでしょうか? 教えてください。よろしくお願いします。 Sub タイトル検索() Dim myKW As String 'キーワード myKW = InputBox("検索する文字を入力して下さい") Selection.HomeKey Unit:=wdStory 'カーソルを文頭に移動 With Selection.Find .ClearFormatting .Font.Color = 16738047 .Text = myKW .MatchWildcards = False .MatchFuzzy = False If Len(myKW) = 0 Then Exit Sub If .Execute = True Then Do While .Execute If MsgBox("次を検索", vbokcansel, "確認") = vbOK Then Selection.Find.Execute End If Loop   MsgBox "処理が終了しました。" Else MsgBox "文字はありませんでした。" End If End With With Selection.Find ' 検索・置換のクリア .ClearFormatting: .Replacement.ClearFormatting .Text = "": .Replacement.Text = "" .MatchWildcards = False: .MatchFuzzy = False End With End Sub

  • EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか?

    EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか? 下記のようにならんだDATAがあります。   A列   B列  C列  D列  E列 (1行)2002/12/17 15240 15280 15220 15220 (2行) (3行) (4行) (5行)2002/12/18 15250 15250 15210 15210 (6行) (7行) (8行) (9行)2002/12/19 15220 15310 15220 15310 (10行) (11行) (12行) (13行)2002/12/20 15220 15260 15210 15230 (14行) (15行) (16行) (17行)2002/12/24 15300 15310 15270 15310 (18行) (19行) (20行) (21行)2002/12/25 15300 15340 15300 15600  . . . . . . . . . . . . . . . . . . . . . . . と,このようにDATAは日付の横に数値が4つずつ横に並んでおりますが、この4つの数値をその4つ目の数値の真横のF列から縦に4つ並べたいのですが、一気にできるマクロがないものでしょうか?下記のようにです。   A列   B列 C列 D列 E列  F列 2002/12/17            15240                  15280                  15220                  15220 2002/12/18            15250                  15250                  15210                  15210 2002/12/19            15220 15310 15220 15310                   . . .                    といった感じに一気にマクロで処理してしまいたいのです。DATAはかなりの行数あり、すべて3行の間隔があります。日付の横に4つの数値が規則的に並んでいるというものです。何回でもマクロボタン一発で4つの横に並んだ数値のみを縦に並べた4つの数値にしたいのです。つたない説明で大変申し訳ありませんが、どなたかわかる方お教えくださいませ。

  • wordのマクロでクリップボードの処理

    WORD文書上に、「c:\....jpg」という画像へのアドレスが複数あるとします。そのアドレスを画像に差し替えたいのですがうまくいきません。。 とりあえずマクロでまず「c:\\*jpg」で検索をかけて、文字列をコピー、その文字列を使って図の挿入をしようと思っています。 Sub Macro1() Dim 画像 Selection.Find.ClearFormatting With Selection.Find .Text = "C:\\*jpg" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Selection.Copy ※クリップボードの内容を変数「画像」へ代入 Selection.Delete Unit:=wdCharacter, Count:=1 Selection.InlineShapes.AddPicture FileName:= _ 画像, LinkToFile:=False, SaveWithDocument:= _ True End Sub 以上が今考えているマクロなんですが、※の部分で変数「画像」へクリップボードから代入をする処理がどうにもうまくいきません。 wordのマクロは初めていじるのでよくわかりません。 どなたかわかる方教えてください。よろしくお願いします。

  • MS Wordのマクロに記録されない

    Word2010を使用しております。 マクロで、全角の数字のみを選択したいと考えています。 手動では、「高度な検索」画面で、ワイルドカードにチェックを入れ、「検索する文字列」に「[0-9]」と入力し、「検索する場所」に「メイン文書」を選択すると、全角の数字が全て選択されます。 しかし、これをマクロに記録し、実行しても、まったく選択されません。 この解決策か、マクロに記述するコードを教えてください。

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • word2007 マクロ

    下記マクロは蛍光ペン部分を消して、その文字数分にアンダーラインを引くマクロになります これを改造して、赤文字を消して、その文字数分を空欄にしたいのです。 ですが、wdColorRedの入れ方が分かりません。ご教授お願いします。 Sub Problem() '蛍光ペン部分を消して、アンダーラインを引く Selection.Find.ClearFormatting Selection.Find.Highlight = True Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find.Replacement.Font .Underline = wdUnderlineSingle .StrikeThrough = False .DoubleStrikeThrough = False .Outline = False .Shadow = False .Hidden = False .AllCaps = False .Superscript = False .Subscript = False End With With Selection.Find .Text = "*" .Replacement.Text = " ^z" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • word2007 マクロ

    下記マクロは蛍光ペンの箇所を括弧と空欄で書き換え、穴あき問題にするマクロです。 これを、文字数の分だけ、空欄をつくるにはどうすればいいのか? また、蛍光ペンではなく、赤文字を括弧と空欄で書き換えるにはどうすればいいのか、 教えて頂けたら幸いです。 Sub Macro7() Selection.HomeKey wdStory '文章の最初をカーソル移動 p1: Selection.Find.ClearFormatting Selection.Find.Highlight = True '蛍光ペンを問題にする With Selection.Find .Text = "" '文字は問題にしない .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute '検索実行 If Selection = m Then Exit Sub '同じところを繰り返し見つけ出したら終わる x = "(        )" 'カッコで囲む語句を作成(蛍光ペンなし) m = x '終わり判定のため保存 Selection.Delete '一旦消して Selection.InsertAfter x 'カッコつきを挿入。いわば置換 GoTo p1 End Sub

  • Wordのマクロを造りたいです。

    マクロの条件は以下のとおりです。 カタカナ⇒全角 英数字記号⇒半角 別途指定文字の変換 (例)   (1)⇒[1] 変換文字個数を表示 上記、4つの内容を1つのマクロ内で処理したいです。 お知恵をお願いします。 現在使用しているのは以下のマクロです。 Sub 電子納品のための変換プログラム() ' ' 電子納品のための変換プログラム Macro ' 記録日 2006/01/19 記録者 HP Customer ' With Selection.Find .MatchFuzzy = False End With t = 0 ' 英字 While Selection.Find.Execute(FindText:="[A-z]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True Forward = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthHalfWidth t = t + 1 Wend ' 数字 While Selection.Find.Execute(FindText:="[0-9]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True Forward = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthHalfWidth t = t + 1 Wend ' カナ文字 While Selection.Find.Execute(FindText:="[ヲ-ン][゛゜]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend While Selection.Find.Execute(FindText:="[ヲ-ン]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend While Selection.Find.Execute(FindText:="[。-゜]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend t = CStr(t) Msg = t + "件の変換がありました。" MsgBox (Msg) End Sub

このQ&Aのポイント
  • 全国あちこちで、車の信号無視などによる事故がいまだに起きていますね。
  • 自己中なドライバーの意識を変えさせる方法、何かないんですかね?
  • 歩行者信号が青で横断歩道を渡っていた時、車が減速もせず突っ込んできました。ロングクラクションを鳴らし、横切っていく時にこちらを睨みつけてくる始末でした。またある時は、横断歩道を渡ろうと歩き出した途端、猛スピードで車が突っ込んできたこともあります。
回答を見る

専門家に質問してみよう