Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6 / 306 ツリー ←次へ | 前へ→

【877】検索文字の後ろに文字挿入 あおぎんこ 19/6/11(火) 17:12 質問[未読]
【878】Re:検索文字の後ろに文字挿入 マナ 19/6/11(火) 22:30 発言[未読]
【886】Re:検索文字の後ろに文字挿入 あおぎんこ 19/7/3(水) 14:29 質問[未読]
【887】Re:検索文字の後ろに文字挿入 マナ 19/7/3(水) 23:07 発言[未読]
【888】Re:検索文字の後ろに文字挿入 あおぎんこ 19/7/4(木) 19:23 質問[未読]
【889】Re:検索文字の後ろに文字挿入 マナ 19/7/4(木) 20:17 発言[未読]
【890】Re:検索文字の後ろに文字挿入 あおぎんこ 19/7/5(金) 12:06 お礼[未読]

【877】検索文字の後ろに文字挿入
質問  あおぎんこ  - 19/6/11(火) 17:12 -

引用なし
パスワード
   いつも参考にさせていただいています。

名簿(エクセル)を元に、各種Wordファイルに名簿の名入りの
Wordファイルを作る必要があるため、差込印刷ではなくマクロ
で何とかしようと四苦八苦しております。

各Wordファイルには「氏名」項目が必ずあるため、その後ろに
名前を入れてファイル保存していければと考え、具体的には次
の1.〜5.の処理を行いたいと思っています。

1.エクセルファイル(名簿)を開き、名簿シートの「名前」列
を空白になるまでLooPし「名前」を順に取得
2.ダイアログでWordファイルを選択
3.開いたWordファイルで検索文字列「氏名」を検索
4.ヒットしたら、その後ろに1.の名前を入力
5.ファイルに名前をつけて保存
〜空白になるまで繰り返し、終了

1.2.5.はできているのですが、3.で検索した後に4.の名前挿入の
ところで足踏みしております。
webで検索しながらひとつずつやっている状況ですが、

ヒットしたときにどういうコードを書けば、希望の処理ができる
のか、調べてもよくわからず・・。

ヒントだけでも構いませんので、どなたかご教示をよろしくお願い
いたします。

Sub サンプル()

Dim strFile As String
Dim wrdApp As Object
Dim wrdDoc As Object
Dim wrdRng As Object
  
 strFile = "ダイアログで選択したWordファイルのフルパス"
    
 Set wrdApp = CreateObject("Word.Application")’ワードを開く
 wrdApp.Visible = True
 Set wrdDoc = wrdApp.Documents.Open(strFile) '指定のワードファイルを開く
  wrdDoc.Range.WholeStory
    With wrdDoc.Range.Find
       .Text = "氏名"
       .ClearFormatting
       Do While .Execute      
        ’★検索でヒットしたときの処理★
        
       Loop 
    End With
  
 '〜ファイル保存処理〜
 
  
End Sub

【878】Re:検索文字の後ろに文字挿入
発言  マナ  - 19/6/11(火) 22:30 -

引用なし
パスワード
   ▼あおぎんこ さん:

1つのword文書で、挿入は1回だけですよね。

Sub test()
  Dim r As Range
  
  Set r = ActiveDocument.Range
  
  With r.Find
    .Text = "検索文字"
    If .Execute Then
      r.InsertAfter "挿入文字"
    End If
  End With

End Sub

【886】Re:検索文字の後ろに文字挿入
質問  あおぎんこ  - 19/7/3(水) 14:29 -

引用なし
パスワード
   ▼マナ さん:

回答ありがとうございます。
そして、すっかりお礼が遅くなって申し訳ありません。

ご提示のコードを組み込んでみましたところ、Set r = ActiveDocument.Range 
のところで型が一致しません と出ます。
いただいたtestコードをwordで実行するとうまくいくので、これを元に何とか
しようと思ったのですが、行き詰っております。
エクセルから操作しているので、うまくいかないのでしょうか・・??
ご教示いただけるとありがたいです。。

よろしくお願いいたします。


Sub サンプル()

Dim strFile As String
Dim wrdApp As Object
Dim wrdDoc As Object
Dim wrdRng As Object
  
 strFile = "ダイアログで選択したWordファイルのフルパス"
    
 Set wrdApp = CreateObject("Word.Application")’ワードを開く
 wrdApp.Visible = True
 Set wrdDoc = wrdApp.Documents.Open(strFile) '指定のワードファイルを開く
  wrdDoc.Range.WholeStory
   
  Dim r As Range
  Set r = ActiveDocument.Range ←「型が一致しません」
  
  With r.Find
    .Text = "検索文字"
    If .Execute Then
      r.InsertAfter "挿入文字"
    End If
  End With

 '〜ファイル保存処理〜
 
  
End Sub

>▼あおぎんこ さん:
>
>Sub test()
>  Dim r As Range
>  
>  Set r = ActiveDocument.Range
>  
>  With r.Find
>    .Text = "検索文字"
>    If .Execute Then
>      r.InsertAfter "挿入文字"
>    End If
>  End With
>
>End Sub

【887】Re:検索文字の後ろに文字挿入
発言  マナ  - 19/7/3(水) 23:07 -

引用なし
パスワード
   ▼あおぎんこ さん:

>ご提示のコードを組み込んでみましたところ、Set r = ActiveDocument.Range 
>のところで型が一致しません と出ます。

Sub test()
  Dim strFile As String
  Dim wrdApp As Object
  Dim wrdDoc As Object
  Dim wrdRng As Object
 
  strFile = "ダイアログで選択したWordファイルのフルパス"
  
  Set wrdApp = CreateObject("Word.Application")
  w rdApp.Visible = True
  Set wrdDoc = wrdApp.Documents.Open(strFile) '指定のワードファイルを開く

  Set wrdRng = wrdDoc.Range
  With wrdRng.Find
    .Text = "検索文字"
    If .Execute Then
      wrdRng.InsertAfter "挿入文字"
    End If
  End With

  '〜ファイル保存処理〜
 
End Sub

【888】Re:検索文字の後ろに文字挿入
質問  あおぎんこ  - 19/7/4(木) 19:23 -

引用なし
パスワード
   ▼マナ さん:

さっそくの回答ありがとうございます。
ご提示のコードに変更しましたら、エラーは出なくなりました!

しかしながら、、
検索文字の後ではなく、ファイルのいちばん最後に文字が挿入されます。

質問ばかりで申し訳ないですが、解決方法がありましたら、ご教示いただ
けるとありがたいです。

よろしくお願いいたします。

>▼あおぎんこ さん:
>
>Sub test()
>  Dim strFile As String
>  Dim wrdApp As Object
>  Dim wrdDoc As Object
>  Dim wrdRng As Object
> 
>  strFile = "ダイアログで選択したWordファイルのフルパス"
>  
>  Set wrdApp = CreateObject("Word.Application")
>  w rdApp.Visible = True
>  Set wrdDoc = wrdApp.Documents.Open(strFile) '指定のワードファイルを開く
>
>  Set wrdRng = wrdDoc.Range
>  With wrdRng.Find
>    .Text = "検索文字"
>    If .Execute Then
>      wrdRng.InsertAfter "挿入文字"
>    End If
>  End With
>
>  '〜ファイル保存処理〜
> 
>End Sub

【889】Re:検索文字の後ろに文字挿入
発言  マナ  - 19/7/4(木) 20:17 -

引用なし
パスワード
   ▼あおぎんこ さん:

>検索文字の後ではなく、ファイルのいちばん最後に文字が挿入されます。

>>      wrdRng.InsertAfter "挿入文字"

この通りしていますか。
変更していませんか。

【890】Re:検索文字の後ろに文字挿入
お礼  あおぎんこ  - 19/7/5(金) 12:06 -

引用なし
パスワード
   ▼マナ さん:

>この通りしていますか。
>変更していませんか。

すみません!
きちんとコードを転機できておりませんでした。
修正しましたところ、目的の動作ができました。

ありがとうございました。
大変助かりました。

6 / 306 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
206458
(SS)C-BOARD v3.8 is Free