我试图将我广泛使用的VBA宏转换为JS / HTML。它采用当前选定的范围,检查内容是否与电子邮件地址相似,然后向这些人撰写电子邮件。
我的框架已经运行,但无法找到如何从我的Excel插件发送电子邮件。我似乎无法从Excel主机访问Outlook api(office.mailbox)。
使用mailto有效但尺寸限制不够,因为我指定了长身体,可能还有数百个收件人。
window.location.href = "mailto:user@example.com
在VBA中,宏看起来像这样:
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加载项调用宏(次优但可以工作)。但是,我也无法找到办法。有什么想法吗?
答案 0 :(得分:1)
Mailto是理想的,但如果数据太多,那么您可以通过Microsoft Graph使用Outlook REST API。以下是有关发送邮件的API的文档:https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_send。这里的优点是您可以更好地控制整个过程,包括实际的Send操作(而不仅仅是创建新消息)。主要的缺点是你可以用这种方法编写更多的代码。