2016-04-21 108 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 
相关问题