2015-05-21 1 views
1

Я пытаюсь загрузить файл HTML в электронное письмо, которое отправляется моей базой данных Microsoft Access. Электронная почта отправляется, когда пользователь нажимает на кнопку (Command109)

Вот мой код, отправляющий электронную почту:Загрузить HTML-файл в VBA Microsoft Access Email

Private Sub Command109_Click() 
'Start of code 
Dim strEmail, strBody As String 
Dim objOutlook As Outlook.Application 
Dim objEmail As Outlook.MailItem 

'Creates an instance of Outlook 
Set objOutlook = CreateObject("Outlook.Application") 

DoEvents 

Set objEmail = objOutlook.CreateItem(olMailItem) 

DoEvents 

'Creates string with email address 
strEmail = PayeeEmail 
strBody = "WHAT SHOULD I PUT HERE TO LOAD AN EXTERNAL HTML FILE?" 

DoEvents 

'Creates and sends email 
With objEmail 

DoEvents 
.To = strEmail 

DoEvents 
.Subject = "Your Distribution from " & COMPANY & " has been processed." 

DoEvents 
.HTMLBody = strBody 
DoEvents 
DoEvents 
.Send 
End With 

Set objEmail = Nothing 
'Closes Outlook. Remove if you do not want to close Outlook 
'objOutlook.Quit 
Exit Sub 
End Sub 

У меня есть этот другой код, который позволяет мне загрузить HTML-файл в Outlook, но я «Не знаю, как скомбинировать код, - чтобы файл HTML загружался в BODY письма, отправляемого Access.

Вот код, у меня есть для макроса, который будет загружать файл HTML в Outlook,:

Sub insertHTML() 
Dim insp As Inspector 
Set insp = ActiveInspector 
If insp.IsWordMail Then 
Dim wordDoc As Word.Document 
Set wordDoc = insp.WordEditor 
wordDoc.Application.Selection.InsertFile "C:\Users\me\Desktop\emailtemplate.html", 
, False, False, False 
End If 
End Sub 

Может кто-нибудь помочь мне понять это? Спасибо за ваше время!

ответ

0

Чтобы объединить строки на нескольких строках, вы должны иметь пробел между «» и «_», поскольку они являются отдельными операторами.

strBody = "<html><p> some of my html text here" & _ 'Note the spaces 
      "more formatted html text here" & _ 
      "even more formatted html text here" & _ 
      "don't forget your closing html brackets</p></html>" 

with objEmail 
    .to = strTo 
    .subject = strSubject 
    .HTMKBody = strBody 
    .send 
end with 

Для удобства читаемости в коде вы можете даже создать отдельный модуль с только строками электронной почты, просто убедитесь, что это общественное, так что его можно назвать.

public strBody as string = your string here 
+0

Еще раз спасибо за ваше время! Добавление пространства сделало трюк! – NickyTheWrench

0

Я не уверен в импортировании файла HTML напрямую, однако в прошлом я только что разместил код HTML прямо в модуле. Это возможно, потому что вы используете .HTMLBody вместо .Body. Вы также можете вставить переменную в HTML-код.

Straight HTML строка

strBody = "<html> YOUR HTML CODE HERE </html>" 

HTML с помощью VBA Переменные

strBody = "<html><p> This is an email from " & COMPANY & ". We value your business</p></html>" 

Очевидно, что это не является идеальным, если шаблон будет часто меняться. Когда я делал это в прошлом, я только что создал шаблон в Outlook, скопировал код HTML в VBA, а затем вставил переменные там, где я их хотел.

Возможно, существует лучший способ сделать это.

+0

Да, я вижу, я могу это сделать, но я ограничен определенным количеством символов в строке VBA. Поэтому я не располагаю достаточным пространством, чтобы соответствовать всем моим стилям HTML и CSS, поэтому вы хотите загрузить отдельный файл HTML в тело. Спасибо за ваше предложение. – NickyTheWrench

+0

Нет символьного ограничения для строк в vba. Предел размера составляет около 2 гб. – iShaymus

+0

Однако существует ограничение по линией. Это можно решить, используя & _, чтобы продолжить строку в новой строке. – iShaymus

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