Я пытаюсь, чтобы мои пользователи могли легко отправлять электронную почту из своих электронных таблиц Excel, которые они хотели бы использовать в качестве интерфейсов для ввода и обработки данных. Мое намерение состоит в том, чтобы написать функцию:Запуск VBA от HYPERLINK()
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 и М2 значения, которые мне нужно ввести в электронное письмо, которое будет создано. Пользователи также будут иметь данные по H3, I3, M3, H4, I4, M4 ... и так далее.
Это действительно работает так, как ожидалось, однако, когда я создаю гиперссылку, отображаемую в электронной таблице, она запускает событие, как только Excel обнаруживает наводку по ссылке. Я хотел бы сделать так, чтобы ссылки были кликабельными и запускали функцию только после того, как пользователь нажал.
Есть ли способ сделать это?
Мои поиски опустели, в основном, советуя людям создавать ссылки вручную на ячейку от самого VBA. Поскольку набор данных, хранящийся моими пользователями, со временем будет расти, мне нужен способ создать новую ссылку «Отправить электронную почту» каждый раз, когда пользователь добавит запись.
Эй, ребята! Спасибо за ваши замечательные предложения, я был в центре других проектов на данный момент, но скоро буду отмечать предпочтительный ответ! Извините за задержку, этот вопрос по-прежнему очень важен для меня! –