获取编译错误函数或子函数未定义Excel VBA

时间:2016-03-06 06:05:54

标签: vba excel-vba excel

我试图通过在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()以黄色突出显示。问题在于这行代码。 我也尝试过添加参考解算器加载项。但我仍然面临同样的问题。

提前致谢

1 个答案:

答案 0 :(得分:1)

首先在模块代码表顶部的声明区域输入http://example.com/api/clean.php¹(参见脚注)。

第一个错误:http://example.com/api/090b235e9eb8f197f2dd927937222c5703.php应为Option Explicit

第二个错误:Dim Outlookbj As Object< ~~这不是本机工作表或VBA函数。它是一个UDF(可能是由R​​on de Bruin编写的)。您需要在模块代码表中找到它的代码(见下文)。

Dim OutlookObj As Object

¹在VBE的工具►选项►编辑器属性页面中设置需要变量声明会将 Option Explicit 语句放在每个新的顶部创建代码表。这个 将避免像拼写错误那样愚蠢地编码错误以及影响你在变量中使用正确的变量类型 宣言。在没有声明的情况下即时创建的变量都是变体/对象类型。使用选项显式是 被广泛认为是“最佳实践”。