筆箱にVBAのカンニングペーパーを入れる係のみすくです。こんにちは。
Excel VBAでWordの文章を書き換えます。
Wordで完結する場合は、WordにVBAを実装すれば良いですが、
Excel側から操作したいときもあるよね。
Wordの文章の文字列の書き換えです。
↓
参照設定
ツール > 参照設定 >
Microsoft Word 16.0 Object Library
Option Explicit Private wordApp As Word.Application Private wordDoc As Word.Document Private docPath As String Private Sub Class_Initialize() Set wordApp = New Word.Application wordApp.Visible = True End Sub Private Sub Class_Terminate() Set wordApp = Nothing Set wordDoc = Nothing End Sub Public Sub init(ByVal path As String) docPath = path Set wordDoc = wordApp.Documents.Open(docPath) End Sub '--------------------------------------------------------------------------------------------------- '【処 理 名】置換 '【処理概要】文字列を置換する '【引 数】ByVal target As String 対象文字列 ' ByVal exp As String 置換後文字列 '【返 却 値】なし '--------------------------------------------------------------------------------------------------- Public Sub replace(ByVal target As String, ByVal exp As String) With wordDoc.Content.Find .Text = target .Replacement.Text = exp .Wrap = wdFindContinue '先頭/末尾に戻って検索を続ける .MatchFuzzy = True '完全一致 .Execute replace:=wdReplaceAll '置換実行, すべて置換 End With End Sub '--------------------------------------------------------------------------------------------------- '【処 理 名】Wordドキュメント上書き保存 '【処理概要】Wordドキュメント上書き保存する '【引 数】なし '【返 却 値】なし '--------------------------------------------------------------------------------------------------- Public Sub save() wordDoc.save End Sub '--------------------------------------------------------------------------------------------------- '【処 理 名】Wordドキュメントを名前を付けて保存 '【処理概要】Wordドキュメントを名前を付けて保存する '【引 数】保存先フルパス '【返 却 値】なし '--------------------------------------------------------------------------------------------------- Public Sub saveAs(ByVal path As String) wordDoc.SaveAs2 Filename:=path End Sub '--------------------------------------------------------------------------------------------------- '【処 理 名】Wordドキュメントクローズ '【処理概要】Wordドキュメントを閉じる '【引 数】なし '【返 却 値】なし '--------------------------------------------------------------------------------------------------- Public Sub closeDoc() wordDoc.Close savechanges:=False wordApp.Quit End Sub
Public Sub test() Dim wd As ClsWordCtrl Set wd = New ClsWordCtrl Call wd.init("D:\dev\ExcelVBA\test.docx") Call wd.replace("{2}", "書き換える") Call wd.save Call wd.saveAs("D:\dev\ExcelVBA\test2.docx") Call wd.closeDoc Set wd = Nothing End Sub