|
カテゴリ:Word VBA
追記:2023年12月4日
マクロの記事は下記のサイトで書くことにしました。 Word VBA/マクロ 備忘録 本文やオートシェイプの置換は、「Range.Find.Replacement」を使用します。 スマートアートでは、RangeのメンバーのFindは使用できませんでした。 選択する方法(Selection.Find)もうまくいかず…。 TestRange2のメンバーの「Find」は使えそうですが、戻り値が「TextRange2」なんですよね。 他のFindと全然違うので、難しくて分かりませんでした。 やむを得ずInStrで置換することにしました。 スマートアートは初期設定では行内なので、前面などShape型には対応しておりません。 Sub スマートアート置換() Dim shp As Shape, gShp As Shape, inlShp As InlineShape, satNode As SmartArtNode Dim rng As TextRange2, satRng As TextRange2 Dim mae As String, ato As String, txt As String Dim cntMae As Long, cntAto As Long, nagasa As Long, c As Long mae = "■■" '検索キーワード ato = "□□" '置換キーワード nagasa = Len(mae) For Each inlShp In ActiveDocument.InlineShapes If inlShp.Type = wdInlineShapeSmartArt Then For Each satNode In inlShp.SmartArt.AllNodes Set rng = satNode.TextFrame2.TextRange txt = rng.Text cntMae = 1 Do While InStr(cntMae, txt, mae) > 0 txt = rng.Text cntMae = InStr(txt, mae) If cntMae = 0 Then GoTo Continue rng.Characters(cntMae, nagasa).Text = ato Loop Continue: Next End If Next End Sub
お気に入りの記事を「いいね!」で応援しよう
Last updated
Dec 4, 2023 10:17:05 AM
コメント(0) | コメントを書く
[Word VBA] カテゴリの最新記事
|