2014-10-17 2 views
1

Я работаю над скриптом VBA для отправки по почте через Outlook в Excel 2010. Все работает отлично с одним исключением: строка .SentOnBehalfofName не будет работать. Вот полный кодSentOnBehalfOf не работает в Excel 2010 Код VBA

Sub Mail() 
' Working in Office 2010-2013 
    Dim OutApp As Outlook.Application 
    Dim OutMail As Outlook.MailItem 
    Dim strbody As String ' This is for the Body of the email 
    Dim signature As String ' This is for the email signature 

On Error Resume Next 

'Set OutMail = Nothing 
'Set OutApp = Nothing 


Dim sh As Worksheet 
Set sh = Sheets("Mail") 
strbody = sh.Range("C9").Value 


Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 
    With OutMail ' This inserts the email signature 
     .Display 
    End With 
     signature = OutMail.HTMLBody 

With OutMail 
    '.Display 
    .To = sh.Range("C5") 
    .CC = sh.Range("C6") 
    .BCC = sh.Range("C7") 
    .Subject = sh.Range("C8").Value 
    .HTMLBody = "<br>" & strbody & fncRangeToHtml(sh.Range("C13").Value, sh.Range("C14").Value) & signature 
    .SentOnBehalfOfName = sh.Range("C4").Value 
    .Display 

End With 

On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 

End Sub 

Если удалить этот раздел .SentOnBehalfOf работает, но я потеряю свою подпись линию:

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 
    With OutMail ' This inserts the email signature 
     .Display 
    End With 
     signature = OutMail.HTMLBody 

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

Я ищу решение, которое позволяет мне делать то и другое. Любая помощь будет оценена по достоинству.

+0

Check [здесь] (http://stackoverflow.com/questions/ 15800468/can-use-a-text-string-inside-sentonbehalfofname), возможно, ваша строка отключена. – mrbungle

+0

Вы проверили, что строка в ячейке C4 правильно разрешает имя? –

+0

Я сделал, и все. Я нашел решение, которое я опубликую дальше. –

ответ

1

Вот мое решение. Мне нужно было перенести имя .SentOnBehalfOfName в первый оператор в команде WITH, затем .Display сразу после этого. Я заменяю строку для строки подписи на .HTMLBody, чтобы вытащить линию подписи. Код работает нормально!

Я не знаю, почему заявления должны быть в таком порядке, но он работает .......

Sub Mail() 
' Working in Office 2010-2013 
Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem 
Dim strbody As String ' This is for the Body of the email 

On Error Resume Next 

'Set OutMail = Nothing 
'Set OutApp = Nothing 

Dim sh As Worksheet 
Set sh = Sheets("Mail") 
strbody = sh.Range("C9").Value 


Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 
With OutMail 
    .SentOnBehalfOfName = sh.Range("C4") 
    .Display 
    .To = sh.Range("C5") 
    .CC = sh.Range("C6") 
    .BCC = sh.Range("C7") 
    .Subject = sh.Range("C8").Value 
    .HTMLBody = "<br>" & strbody & fncRangeToHtml(sh.Range("C13").Value, sh.Range("C14").Value) & .HTMLBody 

End With 

On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 

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