[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルVBAからWordの特定の文字列を置き換える』(WordMan)
お世話になっております
要約の通り、エクセルのVBAを使用し
Wordファイル内の文字列を置き換えするにはどうしたらよいのでしょうか?
wordファイル名「誓約書.docx」
置き換えたい文字は[メールアドレス]、[氏名]、[日付]
本文は以下に例示します
製造に関するナニナニ・・・
弊社はナントカ・・・
責任者 [氏名]
連絡先 [メールアドレス]
署名日 [日付]
のような文章が書かれています
エクセルファイル名「置き換え.xlsx」シート名「置き換え」
C行には「=TODAY()」の関数が入力されています
A B C D 1 [メールアドレス] [氏名] [日付] 2 tanaka@hoge.com 田中 =TODAY() 3 hayashi@hoge.com 林 =TODAY()
田中なのか林なのかという区別は
エクセルファイル名「見積書.xlsx」シート名「見積」
のA1にtanaka@hoge.comかhayashi@hoge.comとメールアドレスが入力されているのでそこで区別できるのではと思っています
VBAを実行したら
製造に関するナニナニ・・・
弊社はナントカ・・・
責任者 田中
連絡先 tanaka@hoge.com
署名日 2023/12/22
のように置き換わってほしいのです
よろしくお願いいたします
< 使用 Excel:Excel2019、使用 OS:Windows10 >
置き換えたあとはどうするのでしょうか? (マナ) 2023/12/22(金) 18:43:24
2つのシートの違いは?
>エクセルファイル名「置き換え.xlsx」シート名「置き換え」 >エクセルファイル名「見積書.xlsx」シート名「見積」 (マナ) 2023/12/22(金) 18:47:51
たたき台です
word文書の事前準備 ・誓約書.docxは、マクロブックと同じフォルダに保存する ・[氏名][メールアドレス]の文字列に、ブックマークを挿入 ・[日付]文字列を削除し、かわりに日付フィールドを挿入(自動的に更新するにチェック)
マクロの内容 ・word文書を開く ・ブックマークを挿入した位置に、氏名とメールアドレスを転記 ・文書を閉じる ・これを繰り返す
Sub test() Dim wd As Object, doc As Object, fn As String Dim ws As Worksheet, rr As Range, r As Range
fn = ThisWorkbook.Path & "\誓約書.docx" Set ws = Workbooks("置き換え.xlsx").Sheets("置き換え")
Set wd = CreateObject("word.application") wd.Visible = True
Set rr = ws.Cells(1).CurrentRegion Set rr = Intersect(rr, rr.Offset(1))
For Each r In rr.Rows Set doc = wd.Documents.Add(fn) doc.bookmarks("氏名").Range.Text = r.Cells(2).Value doc.bookmarks("メールアドレス").Range.Text = r.Cells(1).Value
'ここに、置換後の処理を記述
doc.Close Next
wd.Quit Set doc = Nothing Set wd = Nothing
End Sub (マナ) 2023/12/22(金) 20:56:27
マナさんの回答をみて思いついた方法です あまり変わりませんが
・Word文書側の準備 以下を参照して、ユーザー設定の文書プロパティを設定します。 Office ファイルのプロパティを表示または変更する https://support.microsoft.com/ja-jp/office/office-21d604c2-481e-4379-8e54-1dd4622c6b75 [プロパティ名]を責任者、連絡先、署名日 で適当に初期値を設定します。型は文字列にしておいてください 以上ができたら、この情報をWord文書中に埋め込みます。 リボンの[挿入]タブ→[テキスト]グループ→[クイックパーツ]→[フィールド] フィールドの選択で、[分類]は文書情報、[フィールドの名前]を DocProperty にすると 左側のプロパティで先に設定したユーザー設定の文書プロパティが選択できるので挿入します。 ここまで出来たら、保存してください。 ・Excel側のマクロ
Excel側から、先のWord文書を開いて、ユーザー設定の文書プロパティを書き換えます サンプルです
Sub sample() Dim wdApp As Word.Application Dim wdDoc As Word.Document Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True Set wdDoc = wdApp.Documents.Add("D:\誓約書.docx") ' ファイル名を設定してください wdDoc.CustomDocumentProperties("責任者").Value = "あべの せいめい" wdDoc.CustomDocumentProperties("連絡先").Value = "hogehoge.com" wdDoc.CustomDocumentProperties("署名日").Value = "2023/12/25" wdDoc.Fields.Update End Sub (´・ω・`) 2023/12/23(土) 05:38:12
なるほど。これなら開いたり閉じたり繰り返す必要ないですね。 (マナ) 2023/12/23(土) 09:36:37
If Sheet7.Cells(n, 4).Value = "SHIMAZU" Or Sheet7.Cells(n, 4) = "SHIMADU" Then Set wordApp = CreateObject("Word.Application") wordApp.Visible = True
Set wordDoc = wordApp.Documents.Open(desktop & "シマズ依頼.docx") Set wordDoc = wordApp.Documents.Open(desktop & "誓約書.docx")
Application.Wait Now() + TimeValue("00:00:05") '5秒待つ
Set wordDoc = wordApp.Documents.Open(desktop & "誓約書.docx")
wordDoc.CustomDocumentProperties("氏名").Value = "田中太郎" wordDoc.CustomDocumentProperties("メールアドレス").Value = "tanaka@hoge.com" wordDoc.Fields.Update
Exit For 'Forを抜ける
マナさん
(´・ω・`)さん
ありがとうございました
返信が遅くなり申し訳ありません
上記のマクロで動くようになりました
(WordMan) 2023/12/25(月) 15:13:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.