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

从Excel发送Outlook电子邮件,将隐藏工作表中的格式化文本放入电子邮件正文,excel,html-email,vba,Excel,Html Email,Vba,毫无疑问,我对VBA或宏几乎没有经验,这是不言而喻的。我已经到了一个地步,如果我在保存所有信息的工作表中,我可以完美地创建电子邮件。我一走出那张工作表,就开始有问题了。我已尝试更改ActiveWorkbook.EnvelopeVisible=True行以引用相关工作表,但失败。我已经修补了一段时间,并尝试了一些排列,我正在努力理解我需要做什么 救命 理想情况下,我希望工作簿只显示用户需要查看的工作表;这意味着隐藏和保护具有公式的工作表,以识别正文的正确电子邮件地址、主题(各种连接成分)和单元格范

毫无疑问,我对VBA或宏几乎没有经验,这是不言而喻的。我已经到了一个地步,如果我在保存所有信息的工作表中,我可以完美地创建电子邮件。我一走出那张工作表,就开始有问题了。我已尝试更改ActiveWorkbook.EnvelopeVisible=True行以引用相关工作表,但失败。我已经修补了一段时间,并尝试了一些排列,我正在努力理解我需要做什么

救命

理想情况下,我希望工作簿只显示用户需要查看的工作表;这意味着隐藏和保护具有公式的工作表,以识别正文的正确电子邮件地址、主题(各种连接成分)和单元格范围(格式和间距如工作表中所述)(作为正文html或rtf而不是附件)。所以,点击按钮,就会创建并发送一封电子邮件(用户告知发生了这种情况)

我们的Office 2010正在使用Outlook

我已将脚本从改编为以下内容:

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多个地方当局拥有财产,每个地方当局都有自己的规则

它被一线员工(一些技术恐惧症患者)使用,申请人通常在他们面前

该手册还确定了符合特定标准的人员,以标记提供的可能有帮助的服务(如就业和培训支持)。共有六种不同的服务,每种服务都有若干提供商和限制,有些是基于位置的。目前,转介通过标记申请人已达到标准(可能从服务中受益)并表明申请人已获得服务来起作用。如果申请人回答“是”,则会单击一个连接的超链接,根据地点、服务、家庭构成和财产类型,在“收件人”、“抄送”和“主题”字段前加上前缀。该主题还包括转介的时间框架(提供给客户)

每个主题都是定制的。接受转介的人员在收件箱中使用定制主题来确定优先级,而无需查看电子邮件正文;定制主题的设置允许根据转介机构的要求进行分类(即每个主题都不同!)

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


速度是改进“工具”的关键驱动因素。我正试图找到浪费步骤和速度改进。自动化电子邮件可以为每次面试节省最多2分钟的时间,并减少出错的机会。

据我所知,您需要隐藏某些工作表

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

您可以通过索引对其进行迭代:

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 iIndx作为整数
对于iindx=1的工作表。计数
如果是工作表(iindx)。请命名“转介”,然后
工作表(iindx).visible=xlSheetHidden
其他的
工作表(iindx).visible=xlSheetVisible
如果结束
下一个
或按成员

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
dim oSheet作为工作表
对于工作表中的每个osheet
如果osheet.名称为“转介”,则
osheet.visible=.visible=xlSheetHidden
其他的
osheet.visible=.visible=xlSheetVisible
如果结束
下一个
因此,您可以在使信封可见之前隐藏所有其他图纸,然后将其取消隐藏


Philip

Philip-谢谢你的建议-我今天会试一试,让你知道。HTH Philip-谢谢你。我没有意识到的是,我可以进入工作表执行宏,然后再次退出。因此,我使用了逻辑来取消隐藏和激活工作表,以执行例行程序,然后弹出到一个可见的“用户”工作表并再次隐藏它。它现在起作用了。我很感激(我已经挣扎了一段时间了,心情也很愉快)。非常感谢。