プロが教えるわが家の防犯対策術!

 いつも勉強させていただいております。
質問させていただきます。どうぞよろしくお願いいたします。

 ため込んだ(結構量ありますorz)ファイル(*.doc、*.txt)の中身の、
ある文字をすべて別の文字にVBAで検索→置換したく、今日ずっと
調べておりました。*.xlsについてはやり方が見つかったのですべて
うまく置換できたのですが、Word文書とText文書についてのやり方が
分かりませんでした。
 多分Filesystemobject(?)を使うのだと思うのですが、
もし参考になりそうなページやコード等ございましたら、
ぜひお教えいただけませんでしょうか。
 もしお詳しい方がいらっしゃいましたら、どうぞよろしくお願いいたします。

A 回答 (2件)

テキストファイルを正規表現を用いて置換するコード例を挙げておきます。


Replace関数による方法(簡単)もありますが、私の勉強のためもあって、やってみました。
(1)エキストファイルの読み書きのコード
(2)正規表現置換関係のコード
(2)はhttp://codezine.jp/article/detail/1655?p=1を参考にした。(1)と組み合わせての処理だが、(2)でははっきりしない点があって、それを試行錯誤で何とか下記になった。
下記では具体的文字列→具体的文字列で単純だが、正規表現の機能を
生かすと、VBAの関数などでは出来ないことが出来る。大文字を小文字にするとか。
ーーー
Sub test01()
Dim re As RegExp
Dim mc As MatchCollection
Dim m As Match
Dim i As Integer
MsgBox CurDir
'f = """" & CurDir & "\ccc.txt" & """"
'MsgBox f
Open "IEno.txt" For Input As #1
Open "IEnoB.txt" For Output As #2
While Not EOF(1)
Line Input #1, x
'---
Set re = New RegExp
re.Pattern = "検索" 'アルファベット(大文字)の連続を表す正規表現
re.Global = True '複数マッチを有効にする
Set mc = re.Execute(x)
If mc.Count <> 0 Then
'MsgBox "x=" & x
'MsgBox "mc.Count = " & mc.Count
For i = 0 To mc.Count - 1
re.Global = True

Set m = mc.Item(i)
'MsgBox "FirstIndex = " & m.FirstIndex & " Length = " _
& m.Length & " Value = " & m.Value
y = re.Replace(x, "置換")
'MsgBox "y=" & y
Print #2, y
Next i

End If
Wend
Close #1
Close #2
End Sub

テストは、「検索」という言葉を数箇所含んだ、複数行の文章のテキストファイルを作る。名前は、上記のままで動くよう、IEno.txtにする。
実行してIEnoB.txtをメモ帳で開くと、「検索」という語ー>置換に置換された文章が見える。なおテキストファイルは変更したものは、別ファイルに作らなければならないことを覚えておくこと。
ーー
テキストファイルを読んでxという変数で文章を捉えて
Sub test02()
a = "Happy Day"
b = "Day"
C = "BirthDay"
x = Replace(a, b, C)
MsgBox x
End Sub
のような関数の追加たでやる方法もある。
上の例では
y=Replace(x,"検索","置換")
でyを書き出せば、コードは簡単だが、今後応用のきく、正規表現の方を上記に挙げた。
ーー
ワードは>「Excel VBA」でではなく、ワードVBAで、置換操作のマクロの記録をとって、あれこれ修正箇所を考えるのが良いと思う。
ワードVBAは情報が少ないが。
ーーー
こんなの質問者にとって背伸びしすぎではないか。丸投げにしないと出来ないのではないか。テキストエディタは多種あって、置換機能の付いているものは多い。メモ帳にもある。
ワードやテキストエディタでの置換で辛抱すべきではないか。

この回答への補足

 どうもありがとうございます!なんと正規表現まで。
今VBAでやってみると一瞬で動きました!
VB.NETだと大分コードが違うようですねー。。。
 今からテキストの書き換・確認作業と並行して、
勉強させていただきます!まずはお礼だけになってしまいますが、
後ほどご報告させていただきますm(_ _)m

補足日時:2009/04/27 03:27
    • good
    • 0
この回答へのお礼

 imogasi様

 さっきテキストファイルの全置換が終わりました!
なんとReplace()が使えるんですね~!^^

 .NETでもテキストのreplaceで検索かけたら、StreamReaderと
StreamWriterっちゅーのが出てきたので、自分でアプリ作成できました!!
アドバイスいただけたおかげでございますm(_ _)m
てっきりExcelやWord同様、CreateObject使って特別なやり方があるものだと
思いこんでおりましたので、まさか全部読み込んで書き換えたものを
吐き出せるとは。。。。

 正規表現のほうのコード理解は今からですorz
上側のコードで(VBAと.NET両方使って)置換作業を完了できたので、
今から集中して後半のコード理解をさせていただきます!

 勉強になりました。本当にどうもありがとうございました!!!!!

お礼日時:2009/04/28 21:23

試しにコードを考えてみました。


Wordの場合です。

Sub test1()
Dim mywd As Object
Dim mydoc As Object

Set mywd = CreateObject("Word.Application")
mywd.Visible = True
mywd.Documents.Open ("D:\test.doc")
mywd.Application.Activate

With mywd.Application.Selection.Find
.Text = "あ"
.Replacement.Text = "A"
End With
mywd.Application.Selection.Find.Execute Replace:=wdReplaceAll

mywd.Windows("test.doc").Close True
mywd.Quit
Set mywd = Nothing
End Sub

この回答への補足

 xls88様
Docファイルすべて置換できました!どうもありがとうございます!
SaveじゃなくてCloseなんですねー。。。Saveが出てこないわけですorz
 xls88様のようにコードを自分で考えて作れる方って、
数多くあるメソッドやプロパティは覚えてらっしゃるんでしょうか???
それともネットとかである程度検索方法を決めてらっしゃるんでしょうか?
自分は必死にSaveで検索かけておりました。。。

 このたびはどうもありがとうございました!

補足日時:2009/04/27 03:00
    • good
    • 0
この回答へのお礼

 ありがとうございます!!
早速今から試します!
まずお礼だけになってしまいますが、後で
ご報告だけでもさせていただきます。m(_ _)m

お礼日時:2009/04/25 22:31

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