从Excel发送Outlook电子邮件,将隐藏工作表中的格式化文本放入电子邮件正文中

时间:2013-05-15 11:08:12

标签: excel-vba html-email vba excel

我对VBA或宏的经验很少,毫无疑问,这将变得不言自明。如果我在包含所有信息的工作表中,我已经完全可以创建电子邮件了。一旦我走出该工作表,我就开始遇到问题。我已经尝试更改ActiveWorkbook.EnvelopeVisible = True行以引用相关的工作表但是失败了。我已经修改了一段时间并尝试了一些排列,我正在努力理解我需要做什么。

帮助(请)!

理想情况下,我希望工作簿只显示用户需要查看的工作表;这意味着隐藏&保护具有公式的工作表,以识别正确的电子邮件地址,主题(各种连接的组件)和主体的范围(在工作表中列出的格式和间隔)(作为正文html或rtf而不是一个附件)。所以在按钮上点击一个电子邮件被创建并发送(用户告诉已发生这种情况)。

我们正在使用Office 2010并使用Outlook。

我已将http://support.microsoft.com/kb/816644的脚本改编为以下内容:

Sub MArefEmail()
' MArefEmail Macro
' Create email to provide the referral for the service


   ' Select the range of cells on the active worksheet.
   Worksheets("Referrals").Range("P93:AB113").Select

   ' Show the envelope on the ActiveWorkbook.
   ActiveWorkbook.EnvelopeVisible = True

   ' Set the optional introduction field thats adds
   ' some header text to the email body. It also sets
   ' the To and Subject lines. Finally the message
   ' is sent.
   With Worksheets("Referrals").MailEnvelope
      .Introduction = "Referral requested by applicant during pre-tenancy interview."
      .Item.To = "service@xxx.org.uk"
      .Item.CC = "first.last@xxx.org.uk"
      .Item.Subject = Range("b43").Text
      '.Item.Send
   End With

MsgBox "Referral email sent to yyy service"

End Sub

欢迎所有帮助。

背景

我一直在建立一个收入/支出计算器,其中包括福利评估,账单估算器以及为住房协会内置的一些标志和通知,旨在帮助支持低收入家庭。它还计算确定(如果相关)由于最近的福利改革(包括地方和国家福利)和储蓄而导致的任何福利收入损失。该组织拥有超过100个地方当局的财产,每个地方都有自己的规则。

前线工作人员(有些技术恐惧症)通常会将申请人用于他们面前。

该工作簿还确定了符合某些标准的人员,以标记提供可能有用的服务的提议(例如就业和培训支持)。有六种不同的服务,每种服务都有许多提供者和限制,有些是基于位置的。推荐目前的工作方式是标记申请人符合标准(可能从服务中受益)并建议申请人获得服务。如果申请人说“是”,则点击连接的超链接,预先填写To,Cc&主题字段取决于位置,服务,家庭构成和财产类型。主题还包括推荐的时间范围(作为给予客户)。

每个科目都是定制的。接收推荐人的人使用定制主题来识别收件箱中的优先级,而无需查看电子邮件的正文;定制主题的设置允许按照推荐机构的要求进行排序(即每个主题都不同!)。

然后,工作人员需要移动到另一个工作表,将一系列单元格复制并粘贴到电子邮件正文中。六种推荐类型中的每一种都具有不同的单元格范围,然后发送电子邮件。此过程可确保每次推荐所需的信息质量。

速度是改进“工具”的关键驱动因素。我正试图找到浪费步骤和提高速度。自动化电子邮件每次访问最多可节省2分钟,并减少出错的可能性。

1 个答案:

答案 0 :(得分:1)

你需要按照我的理解隐藏某些工件。

工作表是工作簿中集合的一部分。

您可以通过索引迭代它们:

dim iIndx as integer

For iindx=1 to worksheets.count
    if worksheets(iindx).name<>"Referrals" then
        worksheets(iindx).visible=xlSheetHidden
    else
        worksheets(iindx).visible=xlSheetVisible
    end if
next

或成员

dim oSheet as worksheet

for each osheet in worksheets
    if osheet.name<>"Referrals" then
        osheet.visible=.Visible=xlSheetHidden
    else
        osheet.visible=.Visible=xlSheetVisible
    end if
next

因此您可以在使信封可见之前隐藏所有其他纸张,并在以后取消隐藏它们。

HTH 菲利普