• ベストアンサー

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