2016-08-16 24 views
1

私はJS/HTMLに広範囲に使用するVBAマクロを変換しようとしています。現在選択されている範囲を受け取り、コンテンツが電子メールアドレスのように見えるかどうかを確認し、それらの人々への電子メールを作成します。Excelアドイン(js)から電子メールを送信する方法

フレームワークは機能していますが、Excelアドインから電子メールを送信する方法を見つけることはできません。 ExcelホストからOutlook API(office.mailbox)にアクセスできないようです。

mailtoを使用していますが、私は長い身体や何百もの受信者を指定しているため、サイズ制限が不十分です。 VBAで

window.location.href = "mailto:[email protected] 

マクロは次のようになります。

Sub EmailSelected() 
    Dim OutlookApp As Object 
    Dim Mess As Object, Recip As String 
    Dim selRange As Range 
    ' If there is only one cell selected, don't call SpecialCells, it messes up 
    If selection.Count = 1 Then 
     Set selRange = selection 
    Else 
     Set selRange = selection.SpecialCells(xlCellTypeVisible) 
    End If 

    ' If the first cell contains an email address, send as email. 
    If InStr(selRange.Item(1).Value, "@") > 0 Then 
     For Each c In selRange.Cells 
      Recip = Recip & c.Value & ";" 
     Next 
     Set OutlookApp = CreateObject("Outlook.Application") 
     Set Mess = OutlookApp.CreateItem(olMailItem) 
     If selRange.Count = 1 Then 
      Mess.To = Recip 
     Else 
      Mess.BCC = Recip 
     End If 

     Mess.Display 
    Else 
     ' google the cell contents 
     For Each c In selRange.Cells 
      Recip = Recip & c.Value & " " 
     Next 
     ActiveWorkbook.FollowHyperlink ("http://www.google.ca/search?q=" & Recip) 
    End If 
End Sub 

別のオプションは、(次善のが、仕事ができる)アドイン私のExcelからマクロを呼び出すことになります。しかし、私はこれを行う方法を見つけることができません。何かご意見は?

答えて

1

Mailtoが理想的ですが、データが多すぎる場合は、代わりにMicrosoft Graph経由でOutlook REST APIを使用できます。メールを送信するためのAPIのドキュメントは、https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_sendです。ここでの利点は、新しいメッセージを作成するだけでなく、実際の送信操作など、プロセス全体をより詳細に制御できることです。主な欠点は、このアプローチで書くコードが増えることです。

+1

ありがとうございました。グラフapiを調べます。この周りに他の方法がないように見えます。私はあなたが他のホストからOutlook APIにアクセスすることができないことはちょっと奇妙だと思います。オフィスは統一された製品であり、これはあらゆる種類の異なるケースでこれが役に立つと思います – Leo

関連する問題