みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル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
 以下同様  

追記:
マクロを使用したことはありませんので事前設定方法も教えていただけませんか。 

投稿日時 - 2012-12-09 04:26:03

QNo.7836372

すぐに回答ほしいです

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

.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

投稿日時 - 2012-12-09 15:55:38

補足

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

投稿日時 - 2012-12-10 20:27:47

お礼

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

投稿日時 - 2012-12-24 05:07:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問