エクセルVBAでワードの文字を検索して置換える方法

このQ&Aのポイント
  • エクセル置換表を基に、ワードの文書内を検索し、旧番号を新番号に置換えるVBAのプログラムを紹介します。
  • エクセル置換表を使用し、ワードの文書内を効率的に検索して置換えるVBAのプログラムを解説します。
  • エクセルVBAを使って、ワードの文書内の文字を検索して置換える方法について詳しく説明します。
回答を見る
  • ベストアンサー

エクセルVBAでワードの文字を検索して置換えたい

エクセル置換表を基に、開いてあるワードの文書内を検索して、該当の旧番号があれば、新番号に置換えるVBAのプログラムを 教えていただけませんか。 また、参考になる書籍等があれば教えていただけませんか。  【実施内容詳細】 エクセル置換表を基に、開いてあるワードの文書内(ヘッダー、フッター含)を検索して、該当の旧番号があれば、新番号に置換える。 使用ソフト ワード エクセル 2003 使用ファイル名  A.doc B.xls ステップ1 ワードの文書内に旧番号A1がないか検索して、A1があれば、新番号B1に置き換える。 ステップ2 ワードの文書内に旧番号A2がないか検索して、A2があれば、新番号B2に置き換える。 ステップ3 エクセルA列の最後(空欄)まで実施して終了する。 エクセル置換表      A列  B列     旧番号 新番号  行2  A1    B1  行3  A2    B2  以下同様   追記: マクロを使用したことはありませんので事前設定方法も教えていただけませんか。 

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

  • ベストアンサー
回答No.1

.Find.Executeの処理結果がうまく拾えなかったので、置換表のC列に出したのは、単に通過した、という意味、、、 Option Explicit Sub WORD検索置換() Const xPath = "D:\tmp\tmp\aho.doc" Const xKey = "A" Const xKey_Rep = "B" Const wdReplaceAll = 2 Dim objWord As New Word.Application Dim objDoc As Word.Document Dim objSelection As Object Dim xSheet As Worksheet Dim xResult As Boolean Dim xLast As Long Dim kk As Long Dim nn As Long On Error Resume Next Application.ScreenUpdating = False Application.DisplayAlerts = False Set xSheet = Sheets("Sheet1") xLast = xSheet.Cells(Rows.Count, "A").End(xlUp).Row ' Word文書を開く Set objWord = CreateObject("Word.Application") objWord.Visible = True Set objDoc = objWord.Documents.Open(xPath) Set objSelection = objWord.Selection With objSelection For nn = 2 To xLast If (xSheet.Cells(nn, xKey).Value <> Empty) Then 'objSelection.Find.Text = "Contoso" .Find.Text = xSheet.Cells(nn, xKey).Value .Find.Forward = True .Find.MatchWholeWord = True .Find.Replacement.Text = xSheet.Cells(nn, xKey_Rep).Value xResult = .Find.Execute(Replace:=wdReplaceAll) xSheet.Cells(nn, "C").Value = Empty 'if (xResult) then xSheet.Cells(nn, "C").Value = "Done??" 'End If End If Next End With objWord.Documents.Close 'objWord.Quit Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

xsazqwerfvbg
質問者

お礼

ご回答ありがとうございました。 大変たすかりました。

xsazqwerfvbg
質問者

補足

ご回答ありがとうございました。 本文の置換えわはうまくできました。 ただ、ヘッダーとフッターについても置換えしたいのですが、 やり方がわかればお教えていただけませんか。 宜しくお願い致します

関連するQ&A

  • ワード+エクセルのマクロ

    めぐみと申します。 ワード+エクセルのマクロのことで質問させて頂きます。 少し複雑ですみません。 ワードに書いてある単語をエクセルの中に記載されてある辞書(A列の単語→B列の単語)を置換したいです。 対象ファイル: 1.ディレクトリ内にあるワードファイルすべてのワードファイル 2.エクセルファイル  A列 検索対象の単語  B列 置換対象の単語 動作: エクセルのマクロを実行すると同じ階層にあるワードを探して、A列の単語の一覧を検索してB列に置換 エクセルのマクロを実行してワードのファイルの中の単語を変換するといった複雑なマクロは可能なのでしょうか? 恐れ入りますがご存じの方がいらっしゃいましたら教えて下さい。

  • EXCEL VBAにて、WORDへ置換

    EXCEL VBAにて、WORD文書への文字列置換を行っております。 文字列の置換自体はできています。 が、 置換文字列に「改行」(vbCRやvbLF)をいれて置換すると、 word側での表示が□になってしまいます。 vbCrだけでもvbLFだけでも、vbCRLFでも□と表示されてしまいました。 chr(13) & chr(10)でも□になりました。 EXCEL VBA にて WORDへ文字列置換する場合に送る、改行コード (たぶん「^p」と予測をつけているのですが)を chr関数等での 表示方法を教えてください。 EXCEL2003 WORD2003 よろしくお願いします。

  • ExcelでVBAでWordの文字列一括検索

    ExcelでVBAでWordの文字列一括検索したいのですが、作成方法が 全くわかりません。 内容としては、フォルダ内の複数のWord文章の文字列を検索し、 検索結果をExcelのシートに落としたいんです。 検索内容としては、「Word文書ファイル名」、「ページ」、「行数」 がわかればOKなのですが…。 仕事で使うため急ぎなのですが、何かいい情報があれば教えてくだ さい。

  • エクセルをワードに貼り付けたい。

    エクセルの表(例:A列B列、2-10行までの表)を、ワードに「セル無し」で貼り付けたいのですが、どうやればよいでしょうか? 実際の表がかなり大きいので、セルごとの表を取り除いて、そのままワードでづらーーーーと貼りたいです。 AとB列はタブ揃えをしたように並んでいるとベストですが、それが無理であればやります。 どうか宜しくお願いいたします!

  • エクセルの文字列の検索に関して

    また、エクセルに関しての質問です。 例えば  A B C D 1あ 1 2い 2 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このような漢字で文字列が縦に入力されていて、  A B C D E 1あ 1   お 5 2い 2   う 3 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このようにD列にある文字に対してA列にある文字で該当する文字を発見し横のBセルにある番号を取ってくるということがしたいです。 この場合だとD1は「お」なので、A列の上から見ていくとA5に「お」があるので、B5の数字「5」をEに入力といったような具合です。簡単なように見えますが、複数の文字列を横断的に検索することができません。 誰か詳しいお方お教え願います。

  • 複数の文字を検索してくれるソフト

    ワードやエクセルで検索するとき、文字を検索したいと思っているのですが、 A B C Dという、4つの文字を検索したい場合、1つずつ検索をかけなければならないのですが、一度に複数の文字列を検索してくれるソフトはありますでしょうか? 文書は、ワード、エクセル、テキスト、HTMLとさまざまですが、文字だけ探してくれれればいいので・・・。 そういうソフトはありますでしょうか?

  • ワード2000のVBAについて

    ワード2000を使っています。 予め、A列に日本語、B列に英語を入力したエクセルファイルを作っておき、ワードファイルから、そのエクセルファイルを開いて、A列の1行目の文字をワード文章で検索し、もし、あれば、B列の1行目の文字に置き換えるという操作を、開いたエクセルの全ての行に対して行うというVBAを作ろうと思っています。 そこで、エクセルファイルを Dialogs(wdDialogFileOpen)で開き、 Selection.Findを使って、 Text に、エクセルファイルのA(n)の文字を代入し、 Replacement.Text に、エクセルファイルのB(n)列を代入し、 nを初期値1から最大行数迄、一つづつ上げていく というコードを組もうと思っているのですが、 エクセルファイルのA1やB1を指定して代入するということはできるのでしょうか? もし、ご存知の方がいらっしゃれば教えてください。 また、ワードのVBAの参考になるHPも、できれば教えてください。お願いします。

  • エクセルVBAで、ある文字を含んでいたら別シートに抽出したい

    エクセル2002を使っています。 シート1に  A列に氏名  B列に住所  C列に電話番号 のデータが300件の表があります。 B列を検索してたとえば大阪府があれば、その行(ABC列)をシート2へコピーして抽出したいのです。  VBAを使ってやりたいのですがどうしたらよいでしょうか? よろしくお願いします。

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

  • エクセル 検索した文字含む周辺のものカウント

    初めまして質問させて頂きます。 不備やわかりづらい場合などは、ご質問頂けますと幸いです。 エクセル2003にて以下のような表がございます。 A列      B列 整理番号  アイテム 1           a 1           a 1           b 2           d 2           e 2           a 3           d 3           c 4           a ・           ・ ・           ・ ・           ・ と続いていきます。 やりたいことは、アイテム『a』を検索して、 整理番号が同じものに、何のアイテムが何個あるか?を検索していきたいです。 単体の場合のみ単体と表示されると最高なのですが。 理想は、別シートにaを検索した場合だと A列 B列 単体 1   ※上記だと4のこと a   1 b   1 c   0 d   0 e   1 といった感じです。 アイテムにa~e以外はなく、別シートに一覧で掲載することも可能なのです。 つたない説明なのですが、ご教授願えれば幸いです。 何卒よろしくお願い致します。

専門家に質問してみよう