アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL VBA でのワード置換を教えてください。

EXCELからワードをオープンして文字列置換をしたいです。

Dim wdObj As Object
Dim wdDoc As Object
Dim objSelect As Object
Dim xResult As Boolean

Set wdObj = CreateObject("Word.Application")

wdObj.Visible = True
Set wdDoc = wdObj.Documents.Open(ActiveWorkbook.Path + "\Sample.doc")
Set objSelect = wdObj.Selection

objSelect.Find.Text = "*****"
objSelect.Find.Replacement.ClearFormatting
objSelect.Find.Replacement.Text = Format(35000, "###,###,###")

objSelect.Find.Execute(Replace:=wdReplaceAll)


上記コードで実行したところ、検索はできるのですが、置換ができません。
手動で置換フォームを出してみると、検索文字列、置換文字列ともに目的の文字列が入っています。
そのまま「全て置換」のボタンを押すと、問題なく置換されます。

色々調べてみたのですが、どのサイトもExecuteで置換できるように書かれていて、煮詰まってしまいました。

お知恵をお貸し下さい。

A 回答 (1件)

以下のマクロで試してみて。



Sub test()
 Dim wdObj As Object
 Dim wdDoc As Object
 Dim objSelect As Object
 Dim xResult As Boolean

 Set wdObj = CreateObject("Word.Application")
 wdObj.Visible = True

 Set wdDoc = wdObj.Documents.Open(ActiveWorkbook.Path + "\Sample.doc")
 Set objSelect = wdObj.Selection

 objSelect.Find.ClearFormatting
 objSelect.Find.Replacement.ClearFormatting
 
 With objSelect.Find
  .Text = "*****"
  .Replacement.Text = Format(35000, "###,###,###")
  .Forward = True
  .MatchFuzzy = True
  .MatchWholeWord = False
  .MatchCase = True
  .MatchWildcards = False
  .Forward = True
  .Wrap = 1 'wdFindContinue
  .Format = False
  .Execute , , , , , , , , , , 2 'wdReplaceAll
 End With

End Sub

ExcelでWordの置換を操作する場合
Find.Execute のパラメータを省略する場合「, , , , , , , , , , 2」の
ように書くほうが確実みたい。
https://msdn.microsoft.com/ja-jp/library/microso …

それと、Selection.Find を使う場合は、条件を省略しないほうが良い
らしいです。
https://oshiete.goo.ne.jp/qa/5559086.html
    • good
    • 1
この回答へのお礼

助かりました

できました!
あっという間にできました!
条件を省略していたのがもんだいだったのでしょうか・・・
とにかく感動しました・・・
本当にありがとうございます!

お礼日時:2015/11/27 15:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!