2016-04-21 36 views
0

我使用的答案(即代碼)這個問題Working with current open email打造步驟的電子郵件。每次運行宏時,它都會將一段正文文本添加到打開的電子郵件的現有正文文本中。問題是,如果我手動對宏「運行」之間的電子郵件進行一些更改,那麼在下次運行時,宏將在我離開光標的位置插入新的正文文本構建塊。但我希望宏在現有(和擴展)正文文本結束後總是添加新的正文文本。更具體地說,這意味着我(可能)需要在代碼爲「oSelection.InsertAfter myText」的行之前(參見上述鏈接中的代碼)將光標(插入點)移動到打開的電子郵件的末尾我正在與之合作。電子郵件 - 如何將光標放在正文文本的末尾?

我試圖玩弄了的SendKeys命令,但使用的是我只設法光標發送到Excel工作簿片在那裏我有宏按鈕結束。我想讓光標結束打開的電子郵件!

+0

'手動做一些改變'好了,最簡單的解決方案是不要手動做任何事情,直到所有的宏都完成了? – findwindow

+0

true - 但是如果用戶沒有線索會怎麼樣?其基本目標是方便用戶,並擁有用戶穩定的宏。 – neo

+0

對。在這種情況下,用戶不應該手動執行任何操作?我提出這個建議只是因爲如果某些事情需要手動完成,那麼有點沒有意義的代碼只能讓它達到99%?說得通? – findwindow

回答

0

好了,我終於想通了:

If oInspector.IsWordMail Then 
      With NewMail 
      .Display 
      SendKeys "^+{END}", True 
      SendKeys "{END}", True 
      SendKeys "{NUMLOCK}" 
      End With 
0

宏葉子在主題字段光標。這將跳光標向下進入體內,並且將其移動到行的結尾:

SendKeys "{Tab}{End}", True

全部實施例:

Public Sub CreateNewMessage() Dim objMsg As MailItem Set objMsg = Application.CreateItem(olMailItem) With objMsg .To = "[email protected]" .CC = "[email protected]" .BCC = "" .Subject = "Test email for you" .Categories = "" .VotingOptions = "" .BodyFormat = olFormatPlain ' send plain text message .Body = "Thank you for your submission. " .Display SendKeys "{Tab}{End}", True End With Set objMsg = Nothing End Sub

參考文獻:

http://www.slipstick.com/developer/create-a-new-message-using-vba/

0

這條線:

SendKeys "{Tab}{End}", True 

在我的電子郵件的正文開頭留下無效光標。通過手動切換,我注意到光標在From,To,CC,BCC等字段中移動。它花了11個選項卡,1 End將光標移動到我電子郵件中一行文本的末尾。雖然看起來很傻,但是我編寫了額外的標籤,並且工作得很完美。

With Mess 
    .Display 
    .Sensitivity = 3 
    .To = Recip 
    .bcc = "redacted recipient" 
    .subject = subject 
    .Attachments.Add Path & fileName & ".pdf" 
    .HTMLBody = strbody & "<br>" & .HTMLBody 
SendKeys "{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{End}", True 
相關問題