2014-09-09 4 views
1

У меня постоянно меняется список инвентаря (часто делаются новые добавления), для которого я пытаюсь написать подраздел, который будет работать с Outlook, чтобы отправить предварительно написанный ответ электронной почты. Из информации, которую я нашел в Интернете (например, полезный опыт Рона де Бруина), кажется, что это должно быть возможно, но я застрял в попытке выяснить, можно ли выполнять код всякий раз, когда гиперссылка электронной почты нажата в пределах Столбец H.Excel в Outlook Предварительно написанный орган VBA

Например, у меня есть имя человека в столбце A, начиная с строки 3, и их электронная почта в столбце H, начиная с строки 3, которая автоматически форматируется как гиперссылка, которая открывает новое пустое сообщение в Перспективы. Я хотел посмотреть, можно ли применить макрос, который будет автоматически заполнять строку Subject и сообщение Body каждый раз, когда будет выбрана гиперссылка. Вот то, что я до сих пор:

Sub SendEmail() 

    Dim olApplication As Outlook.Application 

    Set olApp = CreateObject("Outlook.Application") 

    Dim olMail As Outlook.MailItem 

    Set olMail = olApp.CreateItem(olMailItem) 

    olMail.To= 
    olMail.Subject = "Subject Line" 
    olMail.Body = "This is the body of the e-mail" 
    olMail.Display 

End Sub 

То, что я не работоспособна до сих пор, потому что я не уверен, что мне нужно ссылаться на «=» .то поле в качестве диапазона (колонка H) или, если я необходимо придерживаться условного оператора, чтобы он выполнялся на основе того, когда выбрана гиперссылка ячейки.

+0

H3.value должно работать для поля. – Jhecht

+0

, если они нажимают на гиперссылку в ячейке, то она делает эту ячейку ActiveCell. теперь у вас есть отправная точка для получения других данных. – Sorceri

+0

Поскольку гиперссылка обычно запускает веб-браузер или приложение электронной почты, и вы хотите захватить/перенаправить это действие, вы можете изучить это: http://social.msdn.microsoft.com/Forums/office/en-US/5c5f7698-dae5-4d9b-8f24-62090425e7cf/can-a-hyperlink-execute-a-vba-macro? Forum = exceldev –

ответ

0

Ответ на ваш вопрос: да.
Что вам нужно сделать, так это овладеть недавно открывшимся объектом Inspector Object в Outlook.
Помните, что когда вы нажмете на ссылку, она автоматически создаст MailItem.
Вам нужно завладеть вновь созданным объектом MailItem, чтобы вы могли манипулировать им.

Что-то вроде:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    On Error GoTo halt 
    Application.EnableEvents = False 

    Dim olApp As Outlook.Application 
    Dim olMail As Outlook.MailItem 

    Set olApp = GetObject(, "Outlook.Application") 

    Do While olApp.Inspectors.Count = 0 
     DoEvents 
    Loop 

    Set olMail = olApp.Inspectors.Item(1).CurrentItem 
    With olMail 
     .Subject = "I was able to change the subject" 
     .Body = "Dear " & Target.Range.Offset(0, -1).Value 
     .Display 
    End With 
forward: 
    Application.EnableEvents = True 
Exit Sub 
halt: 
    MsgBox Err.Description 
    Resume forward 
End Sub 

Примите к сведению, что вам нужно, чтобы связать Outlook, в Excel путем ссылки правильно.
Также обратите внимание, что Outlook должен быть открытым, иначе вам нужно добавить обработчик.
Это просто указывает на то, как вы получите доступ к новому созданному mailitem после ссылки на гиперссылку. HTH

+0

Спасибо, L42! Это сработало чудесно. Если бы я хотел включить ссылки на ячейки в другие ячейки в строке активной ячейки (какая бы ни была гиперссылка электронной почты), есть ли возможность включить в этот суб? – user3794203

+0

@ user3794203 Что вы имеете в виду? Я не последовал. Вы можете уточнить? – L42

+0

Да, мне жаль, что это было так расплывчато. Если бы я хотел включить ссылки на ячейки из одной и той же строки в электронной таблице, содержащие гиперссылку, которую я только что выбрал, и включить ссылки в разделе «.Body», возможно ли это? Например, вместо текста в .Body сейчас, если бы я выбрал гиперссылку из столбца B, и у меня было имя клиента в столбце A, я мог бы сделать сообщение .Body, например: «Дорогое Active.Selection (« A "), ..."? – user3794203

Смежные вопросы