我試圖讓我的用戶輕鬆地從他們的Excel電子表格中發送電子郵件,他們喜歡用它作爲數據輸入和操作的前端。我的意圖是編寫一個函數:從HYPERLINK運行VBA()
generateEmail(name, manager, cc)
並且使它可以被用戶調用。
在此,Excel調用Outlook,創建一個新郵件,並轉儲包含格式化電子郵件發送的文本,該文本將包含一些從當前正在處理的表中動態更改的值。這是VBA函數:
Function generateEmail(name, manager, cc)
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "To Service Desk:" & vbNewLine & vbNewLine & _
"Please open a ticket for CS/oe/ns/telecom/dal to request a new extension. Please find the details attached:" & vbNewLine & vbNewLine & _
"Name: " & name & vbNewLine & _
"Manager: " & manager & vbNewLine & _
"CC: " & cc
On Error Resume Next
With OutMail
.To = "[email protected]"
.cc = ""
.BCC = ""
.Subject = "New Extension Request"
.Body = strbody
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Function
然後,在我加入這個表中的最右邊的專欄中,我做的鏈接欄:
=HYPERLINK(generateEmail(H2, I2, M2), "Generate Email")
其中H2,I2和M2我需要注入到將生成的電子郵件中的值。用戶也將獲得H3,I3,M3,H4,I4,M4等數據。
這實際上可以正常工作,但是當我在電子表格中顯示超鏈接時,只要Excel檢測到鏈接上的鼠標懸停,就會觸發事件。我希望這樣做,所以鏈接是可點擊的,並且只有在用戶點擊了之後才能激活功能。
有沒有辦法做到這一點?
我的搜索已經空了,基本上建議人們從VBA本身手動創建每個單元的鏈接。由於我的用戶存儲的數據集將隨着時間的推移而增長,因此每次用戶添加記錄時都需要創建新的「發送電子郵件」鏈接。
嘿傢伙!感謝您提供了令人敬畏的建議,目前我一直處於其他項目的中間,但我很快就會標記出首選答案!抱歉抱歉,這件事對我來說還是很有意義的! –