none
Excelの表をOutlookに貼り付け(MicroSoft Excel ワークシート オブジェクト形式) RRS feed

  • 質問

  • Excelの表をコピーして、Outlookのメッセージ内に貼り付けたいです。

    リッチテキスト形式での貼り付けや、図として貼り付ける方法は、調べたら分かったのですが、

    MicroSoft Excel ワークシート オブジェクト形式で貼りつける方法が分かりません。

    2018年10月27日 0:28

すべての返信

  • 詳しくはないのですが、まず、手動でもそのようなことができるのでしょうか? 少し調べた限りでは、いずれも画像としてOutlookに貼り付けていました。手動でオブジェクト型式で貼り付けられるのであれば、VBAでもできる可能性があります。ただ、セキュリティ的に考えると難しいように思います。

    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年10月29日 4:46
    モデレータ
  • サンプルはこんな感じでしょうか。

    Option Explicit
    
    ' Outlook ライブラリを参照設定しているときは True にする
    #Const OL_IMPORT = False
    
    #If Not OL_IMPORT Then
    Const olMailItem = 0
    Const olFormatRichText = 3
    #End If
    
    ' Word ライブラリを参照設定しているときは True にする
    #Const WD_IMPORT = False
    
    #If Not WD_IMPORT Then
    Const wdPasteOLEObject = 0
    Const wdInLine = 0
    #End If
    
    Sub test()
    #If OL_IMPORT Then
        Dim ol As New Outlook.Application
        Dim mi As Outlook.MailItem
    #Else
        Dim ol As Object
        Dim mi As Object
    
        Set ol = CreateObject("Outlook.Application")
    #End If
        ' Excel で A1:C5 のセル範囲をコピーする
        Range("a1:c5").Copy
    
        ' Outlook MailItem を作成する
        Set mi = ol.CreateItem(olMailItem)
    
        ' 本文のフォーマットをリッチテキストに設定する
        mi.BodyFormat = olFormatRichText
    
        ' MailItem を表示する
        mi.Display
    
        ' 貼り付ける
        mi.Application.ActiveInspector.WordEditor.Windows(1).Selection.PasteSpecial _
            , False, wdInLine, False, wdPasteOLEObject
    End Sub

    Outlook のメールエディタは MailItem.Application.ActiveInspector.WordEditor.Windows(1) 以降は
    Word と同じなので Word でマクロの記録を使って参考にしてください。

    追記。
    Excel で Outlook オブジェクトを使うには参照設定で Microsoft Outlook xx.x Object Library を
    有効にしてください。
    もしくは型を Object にして、CreateObject("Outlook.Application") してください。

    • 編集済み infade 2018年10月30日 11:41 コードの再修正
    2018年10月29日 11:12