Office関連

各ページの各行の行頭と行末に文字列を挿入するWordマクロ

Word文書の各ページに10行程度の文章があり、各行の行頭と行末に文字列を挿入するマクロを作りたい、との質問をいただきました。

どのような文章なのかが分からないのですが、文字通り【各ページの各行ごと】ということであれば、伊藤さんのブログでも紹介されている「Lineオブジェクト」を使用して、下記のように書くことができます。

Public Sub Sample01()
'各ページの各行の行頭と行末に文字列を挿入
  Dim tmp As Word.WdViewType
  Dim r As Word.Range
  Dim i As Long, j As Long, k As Long
  
  With ActiveDocument.ActiveWindow
    tmp = .View.Type '表示状態を記憶
    .View.Type = wdPrintView '印刷レイアウトに変更
    
    For i = .ActivePane.Pages.Count To 1 Step -1
      For j = .ActivePane.Pages(i).Rectangles.Count To 1 Step -1
        If .ActivePane.Pages(i).Rectangles(j).RectangleType = wdTextRectangle Then
          For k = .ActivePane.Pages(i).Rectangles(j).Lines.Count To 1 Step -1
            Set r = .ActivePane.Pages(i).Rectangles(j).Lines(k).Range
            Select Case r.Characters(Len(r.Text)).Text
              Case vbCr, vbLf, vbCrLf: r.SetRange r.Start, r.End - 1 '改行飛ばし
            End Select
            r.InsertAfter "【行末】"
            r.InsertBefore "【行頭】"
          Next
        End If
      Next
    Next
    .View.Type = tmp '表示状態を元に戻す
  End With
End Sub

【各段落ごと】で良いのであれば、下記のように「Paragraphオブジェクト」を利用すれば良いかと思います。

Public Sub Sample02()
'各段落のはじめと終わりに文字列を挿入
  Dim r As Word.Range
  Dim i As Long
  
  For i = ActiveDocument.Paragraphs.Count To 1 Step -1
    Set r = ActiveDocument.Paragraphs(i).Range
    Select Case r.Characters(Len(r.Text)).Text
      Case vbCr, vbLf, vbCrLf: r.SetRange r.Start, r.End - 1 '改行飛ばし
    End Select
    r.InsertAfter "【行末】"
    r.InsertBefore "【行頭】"
  Next
End Sub

Word マクロの場合は、こういった処理を様々な書き方でできるため、対象となる文章に応じて、処理の仕方を変更する必要があります。

関連記事

  1. Office関連

    手軽に参照設定するためのVBAアドイン

    thom氏のブログで面白い記事がありました。・VBA 参照…

  2. Office関連

    ファイルをブックに埋め込むExcelマクロ

    大分前に書いた回答用のコードが出てきたので、記事として残しておきます。…

  3. Office関連

    Office 2013 アイコン一覧(O)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    Office 2013 アイコン一覧(C)

    ・Office 2013 アイコン一覧 NUM…

  5. Office関連

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

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

コメント

  • コメント (0)

  • トラックバックは利用できません。

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP