Office関連

段落内改行を一括置換するOutlookマクロ

段落内改行 置換 Outlook マクロ」といったキーワードでのアクセスがありました。

恐らくメール本文内にある段落内改行(Shift + Enter)を通常の改行(Enter)にマクロを使って置換したい方の検索だと思われます。

この手の処理はWordで行うことが多く、Wordの資料を検索すると下記のようなページがすぐに見つかります。

・段落内で改行されている箇所を、通常の改行に変更したい
https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=011686

この作業をWordマクロに直したものが下記コードになります。

Public Sub SampleWord()
  Dim r As Word.Range
  
  Set r = ActiveDocument.Range(0, 0)
  With r.Find
    .Text = "^l" '任意指定の行区切り(段落内改行)
    .Replacement.Text = "^p" '段落記号
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = False
    .MatchFuzzy = False
    .Execute Replace:=wdReplaceAll
  End With
End Sub

あとはこれをOutlook用に書き換えれば良いだけですが、Outlookのメール エディタとしてWordを利用している場合は、さほど難しくはありません。

Option Explicit

Public Sub SampleOutlook()
  Dim r As Object
  Const wdFindContinue = 1
  Const wdReplaceAll = 2
  
  With Application.ActiveInspector
    If .IsWordMail = True And .EditorType = olEditorWord Then
      Set r = .WordEditor.Range(0, 0)
      With r.Find
        .Text = "^l" '任意指定の行区切り(段落内改行)
        .Replacement.Text = "^p" '段落記号
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = False
        .Execute Replace:=wdReplaceAll
      End With
    End If
  End With
End Sub

InspectorオブジェクトのWordEditorプロパティからは、WordのDocumentオブジェクトが取得できるので、これを使えばWord用のコードをほとんどそのまま動かすことができます。

ただし、Wordを参照設定していないとWord固有の定数やオブジェクトがそのままでは使えませんので、Constステートメントで定数を宣言しておく、固有オブジェクト型の変数を「Object」型の変数に置き換えておく、といった作業が必要になります。

関連Webページ

Office 2016 Preview for Windowsのサポート情報まとめ前のページ

徹底的にSymbol(シンボル)フォントをチェックするWordマクロ次のページ

関連記事

  1. Office関連

    PowerPointのマクロを共有化して使う方法

    記事のタイトルだけ見るとちょっと分かりづらいですが、要するにWordの…

  2. Office アドイン

    Office 365でVisio JavaScript APIsを試してみました。

    昨年末にVisio Onlineの機能をJavaScriptで拡張する…

  3. Office関連

    [Excel 2013]Web関数を使ってマッシュアップ

    以前書いた記事「Excel 2013で追加された「WEBSERVICE…

  4. Excel

    [Office VBA]カスタムXMLを使って設定情報などをドキュメントに保存する方法

    Twitterで、@akashi_keirinさんの下記ツイートを見か…

  5. Office関連

    [Office 365 Solo]テクニカル サポートってどんなもの?

    前々回の記事に引き続いて、Office 365 Soloの疑問点第三弾…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP