Word VBA質問箱 IV

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

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


1 / 45 ページ 前へ→

【922】[無題]
お礼  NK  - 25/10/3(金) 3:20 -

引用なし
パスワード
   2段階操作だけなら喜んで実行します
なにぶん末尾数字が2桁もあり
実際は99まではありませんが単独操作だと 99】→逆算式に……1】→】まで100回に及ぶことになります
大変効率が上がり助かりました
ちなみにこの数字は一旦エクセル側でデータベースとして同姓同名の重複検査に引っかからないための対処とワード側にデータを貼り付けた際に別人物として扱いたかったからです
【あいうえお1】
【あいうえお2】
但しほんの数名ですが末尾に数字が付く人名もあるので
これは手作業で戻すことになります
約15万人登録していますが日本人ならせいぜい数名ですが
外国人だと十数名いる場合があります
今回も素晴らしい回答をありがとうございました。
・ツリー全体表示

【921】Re:置換ワイルドカード指定
発言  マナ  - 25/10/2(木) 22:18 -

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

2段階で実行してはどうでしょうか

1) 】も含めて、サイズを置換
 ・ワイルドカードを使用する
 ・検索する文字列:[0-9]{1,}】
  書式:なし
 ・置換後の文字列:空欄 
  書式:フォント6pt


2) 】のサイズを8ptに戻す
 ・検索する文字列:】
  書式:フォント6pt
 ・置換後の文字列:空欄
  書式:フォント8pt
・ツリー全体表示

【920】置換ワイルドカード指定
質問  NK  - 25/10/1(水) 21:11 -

引用なし
パスワード
   国語辞典のように何行にも連なる段落区切りだらけの文章を作っております
文字の大きさは8Pになっています
""隅付き括弧内""の文字の後ろの数字(数桁有)だけを6Pにしたいのですが
どのようにして指定してあげればよいのですか?


アイウエオ3【あいうえお3】---------------------------「3」のみ
カキクケコ55【かきくけこ55】-------------------------「55」のみ
サシス2だん【さしす2段】文字数の長い文章は-----改行
折り返して表示しています-----区切り------------------「2」は変換しない
たちつてとよん【タチツテト四】-----------------------「四」は変換しない

宜しくお願い致します
・ツリー全体表示

【919】Re:置き換え
お礼  nK  - 25/4/6(日) 9:30 -

引用なし
パスワード
   ▼マナ さん:
>▼nk さん:
>
>^13[!【]{1,}


早速のご回答ありがとうございます
見事無事できました
これは高度な検索する文字列の設定ですね
小生還暦を超えた爺には永久に難解な設定です
ヘルプにもネットにも参考書にも載っていないようなので
マナさまは独学で学習されたのか尊敬します
特筆すべきは、まったくもって~13の数値が何を意味するのか
ちなみに12や14で試してもヒットしませんでした

健全な方々のスレッドを乱してしまい申し訳ありませんでした
ネットカフェからの投稿でしてエラーが連発していました
削除するにもパスワードを忘れてしまい出来ないありさまでした
・ツリー全体表示

【918】Re:置き換え
発言  マナ  - 25/4/5(土) 15:28 -

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

^13[!【]{1,}
・ツリー全体表示

【917】置き換え
質問  nk  - 25/4/5(土) 2:51 -

引用なし
パスワード
   辞書のような何行にも連なる段落区切りだらけの文を作っております

アイウエオ【あいうえお】
カキクケコ【かきくけこ】
サシス【さしす】 



そこで置換するのですが「【 」=鍵括弧の前の文字だけを太字にしたいので
検索する文字列に「 *【 」でワイルドカードを指定しても
全文字太字になったりしてうまく出来ません
どのように指定してあげれば先頭文字列だけを置換後に太字に完璧に出来るのですか?
・ツリー全体表示

【916】置き換え
質問  nk  - 25/4/4(金) 23:40 -

引用なし
パスワード
   辞書のような何行にも連なる段落区切りだらけの文を作っております

亜伊宇絵御【あいうえお】
加期区家個【かきくけこ】
差誌素【さしす】 



そこで置換するのですが「【 」=鍵括弧の前の文字だけを太字にしたいので
検索する文字列に「 *【 」でワイルドカードを指定しても
全文字太字になったりしてうまく出来ません
どのように指定してあげれば先頭文字列だけを置換後に太字に完璧に出来るのですか?
・ツリー全体表示

【915】置換
質問  nk  - 25/4/4(金) 23:33 -

引用なし
パスワード
   辞書のような何行にも連なる段落区切りだらけの文を作っております

亜伊宇絵御【あいうえお】
加期区家個【かきくけこ】
差誌素【さしす】 



そこで置換するのですが「【 」=鍵括弧の前の文字だけを太字にしたいので
検索する文字列に「 *【 」でワイルドカードを指定しても
全文字太字になったりしてうまく出来ません
どのように指定してあげれば先頭文字列だけを置換後に太字に完璧に出来るのですか?
・ツリー全体表示

【914】ワイルドカードの置換方法
質問  NK  - 25/4/4(金) 23:29 -

引用なし
パスワード
   辞書のような何行にも連なる段落区切りだらけの文を作っております

亜伊宇絵御【あいうえお】段落記号
加期区家個【かきくけこ】段落記号
差誌素【さしす】段落記号



そこで置換するのですが「【 」=鍵括弧の前の文字だけを太字にしたいので
検索する文字列に「 *【 」でワイルドカードを指定しても
全文字太字になったりしてうまく出来ません
どのように指定してあげれば先頭文字列だけを置換後に太字に完璧に出来るのですか?
・ツリー全体表示

【913】ワイルドカードの置換方法
質問  NK  - 25/4/4(金) 23:27 -

引用なし
パスワード
   辞書のような何行にも連なる段落区切りだらけの文を作っております

亜伊宇絵御【あいうえお】⮠
加期区家個【かきくけこ】⮠ 
差誌素【さしす】⮠ 



そこで置換するのですが「【 」=鍵括弧の前の文字だけを太字にしたいので
検索する文字列に「 *【 」でワイルドカードを指定しても
全文字太字になったりしてうまく出来ません
どのように指定してあげれば先頭文字列だけを置換後に太字に完璧に出来るのですか?
※送信前にプレビューしたらエラー表示で「⮠」はワードの段落記号です
・ツリー全体表示

【912】ワイルドカードの置換方法
質問  NK  - 25/4/4(金) 23:26 -

引用なし
パスワード
   辞書のような何行にも連なる段落区切りだらけの文を作っております

亜伊宇絵御【あいうえお】⮠
加期区家個【かきくけこ】⮠ 
差誌素【さしす】⮠ 


そこで置換するのですが「【 」=鍵括弧の前の文字だけを太字にしたいので
検索する文字列に「 *【 」でワイルドカードを指定しても
全文字太字になったりしてうまく出来ません
どのように指定してあげれば先頭文字列だけを置換後に太字に完璧に出来るのですか?
※送信前にプレビューしたらエラー表示で「⮠」はワードの段落記号です
・ツリー全体表示

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

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

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

【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
・ツリー全体表示

【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
・ツリー全体表示

【908】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  マナ  - 24/8/4(日) 8:46 -

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

Sub test2()
  Dim dic As Object
  Dim r As Range

  Set dic = CreateObject("scripting.dictionary")
  Set r = ActiveDocument.Content

  With r.Find
    .Font.Shading.BackgroundPatternColor = wdColorYellow
    Do While .Execute
      dic(dic.Count) = r.Text
    Loop
  End With
 
  If dic.Count > 0 Then
    Documents.Add.Range.Text _
      = "検索結果:" & vbCr & Join(dic.items, vbCr)
  End If

End Sub
・ツリー全体表示

【907】Re:Wordで塗りつぶしされ文字だけ検索した...
回答  M E-MAIL  - 24/8/3(土) 23:25 -

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

ご返信が遅くなり申し訳ございません。
うまく動きました!

うまく動きましたが、私が検索したいのは蛍光ペンではなく、
塗りつぶしされた箇所なのですが、その場合はどのようなコードになりますでしょうか?

ご教授いただけると幸いです。
・ツリー全体表示

【906】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  マナ  - 24/7/31(水) 9:20 -

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


塗りつぶしが黄色の蛍光ペンだとして

Sub test()
  Dim dic As Object
  Dim r As Range

  Set dic = CreateObject("scripting.dictionary")
  Set r = ActiveDocument.Content

  With r.Find
    .Highlight = True
    Do While .Execute
      Do While r.HighlightColorIndex = wdUndefined
        r.MoveEnd Unit:=wdCharacter, Count:=-1
      Loop
      If r.HighlightColorIndex = wdYellow Then
        dic(dic.Count) = r.Text
      End If
    Loop
  End With
  
  If dic.Count > 0 Then
    Documents.Add.Range.Text _
      = "検索結果:" & vbCr & Join(dic.items, vbCr)
  End If

End Sub
・ツリー全体表示

【905】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  M E-MAIL  - 24/7/30(火) 22:52 -

引用なし
パスワード
   ▼マナ さん:
>▼M さん:
>選択したあと、どのような操作を考えていますか。
>同時に全選択された状態である必要がありますか。

ご返信ありがとうございます。
該当箇所だけを抜き出したいので、全選択でコピーしたいのです。
・ツリー全体表示

【904】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  マナ  - 24/7/28(日) 19:39 -

引用なし
パスワード
   ▼M さん:
>Wordで特定の色で塗りつぶしをされた文字だけを検索して、
>該当箇所をすべて選択したいです。
>
選択したあと、どのような操作を考えていますか。
同時に全選択された状態である必要がありますか。
・ツリー全体表示

【903】Wordで塗りつぶしされ文字だけ検索したい。
質問  M E-MAIL  - 24/7/28(日) 14:29 -

引用なし
パスワード
   Wordで特定の色で塗りつぶしをされた文字だけを検索して、
該当箇所をすべて選択したいです。

chatGPTに聞いた下記のコードでは、エラーメッセージが出て検索できませんでした。
どこが違うのか、ご教授いただけますと幸いです。


Sub FindShadedText()
  Dim searchColor As Long
  Dim rng As Range
  Dim found As Boolean
  
  ' 検索する塗りつぶし色を設定(RGB値)
  searchColor = RGB(255, 255, 0) ' 黄色の例

  ' ドキュメントの全範囲を設定
  Set rng = ActiveDocument.Content
  
  ' 範囲の最初に移動
  rng.Collapse Direction:=wdCollapseStart
  
  ' 塗りつぶし色を検索
  found = False
  Do While rng.Find.Execute(FindText:="", Format:=True)
    If rng.Shading.BackgroundPatternColor = searchColor Then
      rng.Select
      found = True
      Exit Do
    End If
    rng.Collapse Direction:=wdCollapseEnd
  Loop
  
  If Not found Then
    MsgBox "指定された塗りつぶし色のテキストが見つかりませんでした。"
  End If
End Sub
・ツリー全体表示

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