【问题标题】:Including code for library reference to sending an email via excel包括库参考代码以通过 excel 发送电子邮件
【发布时间】:2019-02-22 00:17:28
【问题描述】:

对于工作,我们有 excel 文件,我们在其中创建以电子方式批准并通过 excel 模块编码保存为 PDF 的报告。我设置了一个命令按钮,以便在报告获得批准后向客户发送电子邮件,以便他们知道何时开始并查看新报告。但是,我需要一种对 excel 进行编码的方法,以便在项目经理单击“SendEmail”命令按钮时在他们的计算机上包含适当的引用,这样他们就不必每次在不同的项目 excel 中手动执行此操作。

这是我用于发送电子邮件的编码-- 有没有一种方法可以包含 excel 编码来选择我需要的参考资料,而不必每次在每台计算机上手动选择它们? (并且不必包含另一个单独的命令按钮)1

【问题讨论】:

  • 请将问题中的代码粘贴为代码 sn-p,而不是图像。
  • 简短的回答是:使用后期绑定。

标签: excel vba reference


【解决方案1】:

不要使用早期绑定 - 以下是从 Excel 中创建没有任何引用的电子邮件的示例:

Sub LateBindingEmailExample()

    Dim mail As Object, msg As Object

    Set mail = CreateObject("Outlook.Application")
    Set msg = mail.createitem(0)

    With msg
        .To = "exampleemail@exampledomain.com"
        .Subject = "Here is the subject"
        .htmlBody = "Here is the body"
        .Display
        '.Send
    End With

    Set msg = Nothing

End Sub

【讨论】:

  • 此编码有效,但不允许在原始编码中通过 gmail 帐户发送电子邮件:/ 有没有办法指定使用此编码通过 gmail 发送而无需更改使用的参考文献?
  • @S.Jarrett 您只需要使用后期绑定来创建您的 CDO 对象 - CreateObject("CDO.Message") - 请参阅 here 以获得更好的示例。
  • 我整个早上都在尝试,每次尝试运行编码时都会收到“自动化错误”
【解决方案2】:

您要查找的内容称为“Microsoft Excel 的 VBA 插件”。 在此处粘贴来自CPearson website 的定义:

XLA 加载项是一种特定类型的工作簿,它提供自定义函数和/或工具来扩展 Excel 的基本功能。加载项可能包含用户定义的函数,这些函数提供特定于您自己感兴趣的领域或业务的计算函数,这些函数超出了 Excel 的正常计算能力。加载项还可以提供工具来操作工作簿中的数据。实际上,可以编写一个加载项来执行几乎任何您想做的事情。如果可以手动完成,则可以使用 XLA 插件自动完成。

高级推理如下:

  • 您将工作簿中的“发送电子邮件”代码放入一个新工作簿中,并在其中添加所有必要的引用和通用代码
  • 然后,您将工作簿保存为加载项,而不是简单的宏激活工作簿(扩展名 .xlam)。
  • 您要求您的用户在他们的 Microsoft Excel 中安装插件一次:从那时起,他们将能够在他们打开的任何工作簿上使用该功能,而无需明确地在其中编写代码它。

互联网上有很多关于如何制作酷插件的指南,我建议你以下:

  • 带有 Excel 功能区按钮的非常基本的加载项(如果您希望他们通过电子邮件将 ActiveWorkbook 作为 PDF 文件发送,而该工作簿实际上没有任何代码):find it here
  • 有关如何为 Excel 创建加载项的更完整链接列表:find it here

请注意,您可以在 VBA 中编写 Excel 插件,尽管您可以使用 C#(或 VB.NET,尽管我更喜欢第一种)这样的语言来获得更多功能和灵活性。 如果您只需要通过电子邮件发送工作簿并且已经在 VBA 中有一个工作代码,那么继续使用 VBA 加载项。但我建议你不要排除C#,因为它非常强大。

【讨论】:

  • 感谢您的回复!这是一个很好的建议,但是与我一起工作的人会认为这太麻烦并且不想采取额外的步骤,这就是为什么我需要创建自动完成所有事情并且只需要他们按下按钮发送的编码报告批准后发送电子邮件。
  • @S.Jarrett 实际上,当您执行此类操作时,他们仍然需要单击一个按钮。不同之处在于,他们不是单击电子表格上的按钮,而是单击功能区上的按钮,因此他们可以通过电子邮件发送任何工作表,而不必在其中包含代码。
  • 我不需要通过电子邮件发送 Excel 中的任何工作表。我只需要发送一封预先生成的电子邮件,说明“新报告已获得批准,可通过您的客户访问获得。”
  • @S.Jarrett 原理相同,加载项只是一种更简单的代码分发方式。当您在 Excel 工作簿中分发它时,他们需要打开那个特定的 Excel 工作簿并运行那个特定的按钮。当您的代码不依赖于任何工作簿时,加载项允许您通过任何 Excel 工作簿运行特定代码(即使他们正在处理其他事情) .但我知道您将其编码到静态工作簿中会更容易:)
  • 我找到了一个有效的代码,感谢您的时间和投入!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多