「段落内改行 置換 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ページ
- Word 2010 ファイル内の文字列その他のデータを検索および置換する
- https://support.office.com/ja-jp/article/c6728c16-469e-43cd-afe4-7708c6c779b7
- Inspector.WordEditor プロパティ (Outlook)(機械翻訳)
- https://msdn.microsoft.com/ja-jp/library/ff868196.aspx
この記事へのコメントはありません。