我试图通过在Excel中编写代码来自动化Outlook。 Excel数据将在Outlook邮件正文中复制。但是,当我试图运行代码时,我得到编译错误,即函数或子函数未定义。以下是代码:
Private Sub SendMail_Click()
Dim Outlookbj As Object
Dim OutlookMailItem As Object
Dim OutlookAttachment As Object
Dim CopyExcelData As Range
Dim VarDate As String
Dim VarDate1 As String
VarDate = Date
VarDate1 = Left(VarDate, 2)
Set CopyExcelData = Nothing
Set CopyExcelData = Sheets("Sheet1").Range("A1:L27").SpecialCells(xlCellTypeVisible)
If CopyExcelData Is Nothing Then
MsgBox "The Selection is not a range"
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
Set OutlookObj = CreateObject("Outlook.Application")
Set OutlookMailItem = OutlookObj.CreateItem(0)
With OutlookMailItem
.To = "abc@dc.com"
.Subject = "Satus as on " & VarDate1 & " March "
.HTMLBody = RangetoHTML(CopyExcelData)
.Display
End With
End Sub
Private Sub SendMail_Click()以黄色突出显示。问题在于这行代码。 我也尝试过添加参考解算器加载项。但我仍然面临同样的问题。
提前致谢
答案 0 :(得分:1)
首先在模块代码表顶部的声明区域输入http://example.com/api/clean.php
¹(参见脚注)。
第一个错误:http://example.com/api/090b235e9eb8f197f2dd927937222c5703.php
应为Option Explicit
第二个错误:Dim Outlookbj As Object
< ~~这不是本机工作表或VBA函数。它是一个UDF(可能是由Ron de Bruin编写的)。您需要在模块代码表中找到它的代码(见下文)。
Dim OutlookObj As Object
¹在VBE的工具►选项►编辑器属性页面中设置需要变量声明会将 Option Explicit 语句放在每个新的顶部创建代码表。这个 将避免像拼写错误那样愚蠢地编码错误以及影响你在变量中使用正确的变量类型 宣言。在没有声明的情况下即时创建的变量都是变体/对象类型。使用选项显式是 被广泛认为是“最佳实践”。