メール本文のテキストのみをコピーするマクロ


コメントにて以下のご相談をいただきました。


初めての訪問です。ご相談があって書き込みをさせていただきます。
実は、Outlookで受信したメールの本文に含まれる「氏名」をコピペして、FileMakerで構築したDBを検索すると、以前はヒットしていたものが、2016以降、ヒットしなくなりました。
同じメールをGmailやWindows10のメールで受信して同じことをやると以前のようにヒットしますので、Outlook2016の問題ではないかと睨んでいます。
ところが、試しに本文中の「氏名」を件名にコピペして、さらにそれをコピペすると、FileMakerでの検索がヒットします。
つまり、ヒットしないのは、「本文中にある氏名」をコピペした場合のみです。
メール設定をいろいろと試してみましたし、「本文中にある氏名」をペーストする際にプレーンテキストとして貼り付けたりもしてみましたが、どうしてもうまくいきません。
日常業務に支障が出始めておりますが、今のところ原因・解決のめどがまったく立っておらず、こうして藁をもすがる思いで書き込みをさせていただきました。
もし、何かヒントでもございましたら、ぜひ、ご教示いただけないでしょうか。
よろしくお願いいたします。


一度件名にコピー&ペーストしてからさらにコピー&ペーストで発生しないとなると、Outlook の本文からのコピーの際にテキスト情報以外のものが含まれることで、検索に影響が発生している可能性が考えられます。
Windows でコピー&ペーストを行うと、内部的には以下のような動作が行われます。

  1. コピー元のアプリケーションからコピー先のアプリケーションに転送できるデータの形式を通知する
  2. コピー先のアプリケーションが取得できる最適な形式を指定してコピー元のアプリケーションからデータを受け取る

例えば、Outlook の HTML メールの本文をコピー&ペーストする場合、コピー先のアプリケーションにはデータ形式としてプレーン テキストと HTML テキストが通知されます。
そして、例えば受け取る側がメモ帳ならプレーン テキストが選択されて単なる文字列がコピーされ、Word なら HTML テキストが選択されて HTML タグを含んだ文字列がコピーされます。
おそらくは FileMaker がペーストした際にプレーン テキストではないデータを要求することで現象が発生しているのではないかと推測しますが、私の手元に FileMaker がないため、実際にそのような動作なのかはちょっと確認できません。

そこで、Outlook で選択した本文のプレーン テキストのみをコピーするというマクロを作ってみました。
このマクロを使用するには、まず以下の手順で Microsoft Forms 2.0 というライブラリを参照設定として追加します。

  1. Visual Basic Editor で [ツール]-[参照設定] をクリックします。
  2. [参照] をクリックします。
  3. 以下のいずれかの DLL を選択し、[開く] をクリックします。
    C:\Windows\System32\FM20.DLL
    C:\Windows\SysWOW64\FM20.DLL
  4. [OK] をクリックします。

そして、以下のマクロを定義し、本文のテキストのみをコピーしたいときにはこのマクロを実行します。
こちらで現象が回避できるか試してみてください。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub CopyTextOnly()
    Dim dataObject As New MSForms.dataObject
    dataObject.SetText ActiveInspector.WordEditor.Application.Selection
    dataObject.PutInClipboard
End Sub

マクロの登録方法やメニューへの追加について

メール本文のテキストのみをコピーするマクロ」への1件のフィードバック

コメントを残す