ちょっと生きづらさを抱えた人へ、気持ちを楽にするためのお手紙です。

【VBA】Excel VBAでWordの文章を置換

筆箱に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

コメントを残す

メールアドレスが公開されることはありません。