HTML 形式のメールの本文中に含まれる表を Excel にコピーするマクロ


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


いつも参考にさせて頂いております。

今回、マクロの要望を投稿させて頂きます。
ご検討をお願い致します。

Exchange×Outlook2010を利用しています。

表が貼り付けられているHTML形式のメールが毎日送付されてきており、
この表データをエクセルで管理したく思考錯誤しております。

自動でHTML形式メール上の表を、ローカルにエクセルで保存するマクロをお願いできますでしょうか。

期待する動作
  ①1つのHTML形式メール上に表(列x行:8×5、3×4)2種類が貼り付けられています。
  ②①の表2つをそのままの形式でエクセルに保存
  (エクセルは1ファイルでも2つに分かれても問題ありません)
  ③保存の際、エクセルファイル名に日付を入力してファイル保存

ネットでエクセルの表をOutlookに貼り付けるマクロは見受けられるのですが
その逆で、Outlookに貼り付けられている表をエクセルに落とすマクロは
見つかりませんでしたので、すがる思いで投稿させて頂きました。

何卒、宜しくお願い致します。


Outlook のオブジェクト モデルだけで HTML 形式の本文に含まれる表を取り出すマクロを作るのは、非常に面倒です。

しかし、Outlook の Inspector オブジェクトの WordEditor プロパティを使うと、本文を編集するために Word の Document オブジェクトが取得でき、このオブジェクトの Tables プロパティで表の操作が簡単にできるようになります。
例えば、本文の最初の表をクリップ ボードにコピーするという場合、Document オブジェクトの Tables(1).Select メソッドで表を選択し、Application.Selection.Copy メソッドでコピーします。
また、クリップ ボードにコピーした表を Excel に貼り付けるには、Excel のオブジェクト モデルの WorkSheet オブジェクトの Paste メソッドを使用します。
これらをまとめると、下記のようなマクロで実現できます。
表をコピーしたいアイテムをダブルクリックで開き、SaveTwoTablesInActiveInspector を実行すると二つの表をそれぞれSheet1、Sheet2 にコピーし、c:\temp\tables<年月日>.xlsx として保存します。
受信した特定の件名のメールでマクロを実行したければ、ルールのアクションのスクリプトで SaveTwoTables を指定してください。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub SaveTwoTablesInActiveInspector()
    SaveTwoTables ActiveInspector.CurrentItem
End Sub
'
Public Sub SaveTwoTables(objItem As MailItem)
    Const SAVE_BASE = "c:\temp\tables"
    Dim docWord 'As Word.Document
    Dim appExcel 'As Excel.Application
    Dim objBook 'As Excel.WorkBook
    '
    Set docWord = objItem.GetInspector.WordEditor
    Set appExcel = CreateObject("Excel.Application")
    Set objBook = appExcel.WorkBooks.Add
    '
    docWord.Tables(1).Select
    docWord.Application.Selection.Copy
    objBook.WorkSheets(1).Paste
    '
    docWord.Tables(2).Select
    docWord.Application.Selection.Copy
    objBook.WorkSheets(2).Paste
    '
    objBook.Windows(1).Visible = True
    objBook.SaveAs SAVE_BASE & Format(Now, "yyyymmdd") & ".xlsx"
    objBook.Close
End Sub

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

広告

HTML 形式のメールの本文中に含まれる表を Excel にコピーするマクロ」への1件のフィードバック

  1. ご教示有難うございます。
    大変参考になります。
    ご教示頂いた内容をもとに、頑張ってみます!
    有難う御座いました。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中