• ベストアンサー

VBA

基本中の基本かも知れませんが、Wordファイルの特定の位置の文字列をExelファイルの特定の位置のセルに書き込むマクロの作成法を教えて下さい。

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

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

基本中の基本ではありませんが、相手のアプリケーションオブジェクトを 作成して、相手のクラスにあるオブジェクトやメソッドが使えます。 例えば、excel側のvbaからwordを操作するには、 Dim wordapp As Object Set wordapp = CreateObject("Word.Application") としてword操作用のオブジェクトを作ってwordのクラスを使います。 (※VBEで'microsoft word xx object library'の参照設定もした方が何かと便利) 下のサンプルは、EXCELシートのA1セルにWord文書のフルパスファイル名、 A2セルに検索文字をセットしてWord文書の中身をサーチし、A3セルに 見つかった検索文字の右5文字をA3セルにセットしています。 参考になりましたら、後はいろいろ調べて下さい。 (サンプル) Sub data_set() Dim doc_name As Variant Dim sarch_word As Variant Dim result_word As Variant sarch_word = Cells(1, 2).Value Call get_word(doc_name, sarch_word, result_word) Cells(1, 3).Value = result_word End Sub Sub get_word(ByRef doc_name, ByRef sarch_word, ByRef result_word) Dim wordapp As Object Set wordapp = CreateObject("Word.Application") wordapp.Visible = True wordapp.Documents.Open Filename:=doc_name, ReadOnly:=True wordapp.Selection.Find.ClearFormatting wordapp.Selection.Find.Text = "excel" wordapp.Selection.Find.Forward = True wordapp.Selection.Find.Wrap = wdFindContinue If (wordapp.Selection.Find.Execute = True) Then wordapp.Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend result_word = Right(wordapp.Selection.Text, 5) Else result_word = "Not Found" End If wordapp.Quit Set wordapp = Nothing End Sub

kyooklife
質問者

お礼

yyr446さん 回答有難うございます。早速試してみます。

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

サンプル間違い(修正) wordapp.Selection.Find.Text = "excel" でなく wordapp.Selection.Find.Text = sarch_word です。

関連するQ&A

  • WordでのVBAについて

    お世話になります。 Word2010 ExcelVBAだとセルの位置を指定して、目的の場所に特定の 文字列を挿入するようなことができますが、Wordの場合は どのようにやるのでしょうか。 例えば、10行目の右端に「TEST」という文字列を挿入 したい場合や、特定の位置から5cmの罫線を引きたい場合 など。 勉強不足で大変恐縮ですが、ご教示の程、宜しくお願い致します。 ※可能であれば、上記の例で具体的にVBAで教えて頂けると  幸いです。

  • EXELのマクロに関して質問します。

    EXELのマクロに関して質問します。 シートAの任意のセルに文字列を入力後、シートBの同位置のセルと比較し、 同じ内容かどうかを判断する方法を教えてください。

  • 特定文字列以下のセル削除

    こんにちは。 特定の文字列を含むセルから5行削除するマクロを作りたいのですが、 どのようにするとよいでしょうか。 特定文字列は、各列に1つあり、行の位置はバラバラです。 その特定文字列を含み以下5行分のセルを削除し、上に詰めたいと考えています。 初心者ゆえ、ご指導ください。

  • 【Excel VBA】特定の列で時間を入れているセルだけ合計して数式をセルにいれたい

    Excel VBA初心者です。 特定の列の各セル(B列とします)に時間(数字)、件数(数字)、文字列(○や×)が入っています。 この中でランダムな位置に入っている時間(数字)のみ拾い出し、合計欄(セルB20とします)に「数式(例)=sum(b3,b6,b8,b13,b18)」を入れたいのですが、マクロの組み方がわかりません。上記の特定のセルを抽出するところまではできたのですが。 マクロの組み方をご教授願えますか。

  • 文字列によるファイルの特定とセルの参照

    エクセルで特定のセルの文字を結合して作成した文字列(ファイルパスとファイルを特定する文字列)を使って、指定したファイル(ブック)にあるセルを参照することはできますか。例えば、\\server\document\ファイル1という文字列をエクセルで作成してそのファイルにある特定のセルを参照したいのと考えています。どなたか教えてください。

  • execelマクロの文字列編集機能について

    execelマクロの文字列編集機能について 一つのセル内に入力された文字列のなかから特定の文字列を切り出して、他のセルにコピーするマクロを組みたいと考えてます。どういう風にコードを作成すればよいか教えてください。

  • VBAの書き方

    只今VBAで、あるセルで文字を検索して、その文字があるときに、違うセルに文字を出すマクロを作っています。 例えば、エクセルのI列に記入されている文章に"VBA"という文字が入っているとき、M列に"YES"という文字を出したいです。 どのようなマクロの式を書けばこのような操作が出来るのでしょうか。 FINDやInStr関数を使えばよいのかと思いますが… どなたかお分かりのかたは、教えて頂ければと思います。 よろしくお願い致します<m(__)m>

  • VBAで列名で判定して列データを取得したい。

    Exel2003のマクロで特定の列データを別のシートに貼り付けたいのですが。 初めて、BVAを触るのでどのような命令があるのかさえ把握しきれてません。 流れとしては、以下でよいのでしょうか? (1)列名で判定して列を特定する (2)(1)で特定した列のデータを取得する それとも、一発で出来る関数があるのでしょうか?

  • VBA エクセル2000でハイパーリンクをはる

    アクティブなワークシートの特定セル(行位置、列位置 一定)と他のワークシートの不定セル(行位置、列位置 とも、或いは、どちらか、 が変数)間にハイパーリンクをはりたい 実現したいことは至ってシンプルでセル間をジャンプ可能となればOK、です 例えばWorksheet「アクティブ」のCells(固定行位置,固定列位置)と Worksheet「他のシート」のCells(変数行位置,変数列位置)、両変数はその時点でプログラム(マクロ)が獲得済み、間にハイパーリンク(出来たら往復)をはるコードはどういうものになるでしょうか? うまく説明できているか、自信はありませんが何とか教えて頂きたくお願い致します

  • VBAのDIR関数でファイル名「0005」などが「5」だけにならない様にするには?

    あるフォルダ内に有るファイル郡の名称をDir関数で取得してExcelのシートのA列に並べるマクロなんですが、0で始まる数字のファイル名の場合、セルには0が省かれて入ってしまいます。 0011なら0011とそのままセルに入れるには(文字列として入れるには?)、マクロはどう書けばいいんでしょうか?