3

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

请帮忙)!

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

我们正在使用带有 Outlook 的 Office 2010。

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

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

该工作簿还确定了符合某些标准的人,以标记推荐可能有帮助的服务(例如就业和培训支持)的提议。有六种不同的服务,每一种都有许多提供者和限制,有些是基于位置的。目前,推荐通过标记申请人已满足标准(可能从服务中受益)并建议向申请人提供服务来工作。如果申请人说“是”,则点击一个连接的超链接,根据位置、服务、家庭构成和财产类型预先填写“收件人”、“抄送”和“主题”字段。主题还包括推荐的时间范围(如给予客户)。

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

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

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

4

1 回答 1

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 菲利普

于 2013-05-15T13:47:54.147 回答