Office関連

テキストボックス等Shapeオブジェクトのテキストのみを置換するWordマクロ

Word MVPの新田さんのブログで気になる記事がありました。

テキストボックス内の文字を置換するマクロ

テキストボックス等Shapeオブジェクトのテキストのみを置換するWordマクロです。
これまで本文のみ、もしくはオートシェイプを含めた文書全体の文字列置換というのは行ったことがあるのですが、Shapeオブジェクトのみを対象とした文字列置換は行ったことがなかったので、私の方でも試してみました。

Option Explicit

Public Sub Sample()
  Dim Shp As Shape
  Dim GrpShp As Shape
  Dim CvsShp As Shape
  Dim CvsGrpShp As Shape
  
  Const SrcText As String = "あいうえお" '検索する文字列
  Const DestText As String = "かきくけこ" '置換後の文字列
  
  For Each Shp In ActiveDocument.Shapes
    If Shp.Type = msoCanvas Then
    '描画キャンバスの場合の処理
      For Each CvsShp In Shp.CanvasItems
        If CvsShp.Type = msoGroup Then
          For Each CvsGrpShp In CvsShp.GroupItems
            ReplaceShapeText CvsGrpShp, SrcText, DestText
          Next
        Else
          ReplaceShapeText CvsShp, SrcText, DestText
        End If
      Next
    ElseIf Shp.Type = msoGroup Then
    'グループ化されている場合の処理
      For Each GrpShp In Shp.GroupItems
        ReplaceShapeText GrpShp, SrcText, DestText
      Next
    Else
      ReplaceShapeText Shp, SrcText, DestText
    End If
  Next
End Sub

Private Sub ReplaceShapeText(ByVal Shp As Shape, ByVal SrcText As String, ByVal DestText As String)
  If Shp.TextFrame.HasText Then
    '検索条件は適当に設定
    With Shp.TextFrame.TextRange.Find
      .ClearFormatting
      .Forward = True
      .Text = SrcText
      .Replacement.Text = DestText
      .Execute Replace:=wdReplaceAll
    End With
  End If
End Sub

新田さんのマクロではSelectionオブジェクトを利用していますが、上記コードでは、ShapeオブジェクトのTextFrameプロパティ(TextFrameオブジェクト)にあるTextRangeプロパティからRangeオブジェクトを取得できるので、これを利用してみました。

描画キャンバスとグループ化されたアイテムだけは考慮していますが、それ以外は特別な処理をしていませんので、上記コードでは対応できない場合があるかもしれません。

Shapeオブジェクトのみ、ということで中々出番が無いかもしれませんが、こういったマクロも面白いですね(^^)

続・Office Ribbon Editorがダウンロード出来ない?前のページ

Windows 8 Developer PreviewをOS X Lionっぽくする。次のページ

関連記事

  1. Office関連

    WordBasicマクロの資料

    Word 97でVBA機能が搭載される以前のWordでは、WordBa…

  2. Office関連

    すべてのテーブルの結合を解除するWordマクロ

    すべてのテーブルのセル結合を解除するWordマクロを考えてみました(W…

  3. アイコン一覧

    Office 2013 アイコン一覧(C)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    WordやExcelでミニ ツール バーを非表示(無効)にする。

    WordやExcel、PowerPointといったOffice製品で文…

  5. Office関連

    コンテンツコントロールに外部XMLのデータをマップするWordマクロ

    Word 2007で追加された機能「コンテンツコントロール」を使うと外…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP