Word VBA質問箱 IV

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

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


1 / 308 ツリー 前へ→

【909】テキストボックス内の文字を一括で置換したい ぺろ 24/9/23(月) 15:43 質問[未読]
【910】Re:テキストボックス内の文字を一括で置換し... マナ 24/10/15(火) 7:46 発言[未読]
【911】Re:テキストボックス内の文字を一括で置換し... ぺろ 24/10/25(金) 14:11 お礼[未読]

【909】テキストボックス内の文字を一括で置換した...
質問  ぺろ  - 24/9/23(月) 15:43 -

引用なし
パスワード
   テキストボックスとして配置された指定の文字だけを一括で置換を行いたいのですが、複数ファイルがある場合の設定方法をご教授いただけますと幸いです。

1つのファイルの場合ですと下記コードを実行する事で思った動作はしているのですが、複数となった場合のファイルパスの指定方法が分からず…

Sub テキストボックス置換するマクロ()

  Dim i As Integer

  'Shapeオブジェクトに対して置換実行
  For i = 1 To ActiveDocument.Shapes.Count

    ActiveDocument.Shapes(i).Select

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
      .Text = "あいうえお" '検索する文字列
      .Replacement.Text = "かきくけこ"  '置換後の文字列
      .Forward = True
      .Wrap = wdFindContinue
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchByte = False
      .MatchAllWordForms = False
      .MatchSoundsLike = False
      .MatchWildcards = False
      .MatchFuzzy = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

  Next i

End Sub

【910】Re:テキストボックス内の文字を一括で置換...
発言  マナ  - 24/10/15(火) 7:46 -

引用なし
パスワード
   -▼ぺろ さん:

Sub test()
 Dim fdg As FileDialog, p As String
 Dim fso As Object, f As Object
 Dim doc As Document, s As Shape, r As Range
 Dim flg As Boolean
 
  Set fdg = Application.FileDialog(msoFileDialogFolderPicker)
  If Not fdg.Show Then Exit Sub
  p = fdg.SelectedItems(1) & "\"
  
   Set fso = CreateObject("scripting.filesystemobject")

  For Each f In fso.getfolder(p).Files
    If LCase(fso.getextensionname(f.Path)) = "docx" Then
      Set doc = Documents.Open(f.Path)
      For Each s In doc.Shapes
        Set r = s.TextFrame.TextRange
        With r.Find
          .Text = "あいうえお" '検索する文字列
          .Replacement.Text = "かきくけこ"  '置換後の文字列
          .Execute Replace:=wdReplaceAll
          If .Found Then flg = True
        End With
      Next
      doc.Close flg
      flg = False
    End If
  Next
  
End Sub

【911】Re:テキストボックス内の文字を一括で置換...
お礼  ぺろ  - 24/10/25(金) 14:11 -

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

コードありがとうございます。
おかげ様で無事動作させることができました。

1 / 308 ツリー 前へ→
ページ:  ┃  記事番号:
207156
(SS)C-BOARD v3.8 is Free