我得到"错误91:对象变量或者没有设置块变量"在尝试运行简单代码时。此代码在多台计算机上运行。在更新或重新安装多个应用程序后,一台机器现在抛出错误91; Excel可能是也可能不是重新安装的应用程序之一。我的机器,代码运行顺利,具有Excel 2010(14.0.7143.5000)。出现问题的机器有Excel 2010(14.0.7015.1000)。我已经检查过,发现没有遗漏的图书馆参考资料。
以下(标准export-pdf)代码是问题所在。当" OutlApp"时会抛出错误。 object在第二个With块中被引用。
我不是专业程序员,几乎不是业余爱好者。任何帮助,将不胜感激。
Function ExportData()
Dim PrintRange As Range
Dim IsCreated As Boolean
Dim PDFData As String
Dim OutlApp As Object
Dim sh1 as Worksheet
Set sh1 = Sheets("Data")
Set PrintRange = Union(sh1.Range("B4:L70"), sh1.Range("B72:L138"))
PDFData = "F:\DATA\file " & Range("K4").Value & ".pdf"
With PrintRange
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFData, _
QUALITY:=xlQualityStandard, INCLUDEDOCPROPERTIES:=True, _
IGNOREPRINTAREAS:=False, OPENAFTERPUBLISH:=False
End With
On Error Resume Next
Set OutlApp = GetObject(, "OUTLOOK.APPLICATION")
If Err Then
Set OutlApp = CreateObject("OUTLOOK.APPLICATION")
IsCreated = True
End If
OutlApp.Visible = True
On Error GoTo 0
With OutlApp.CREATEITEM(0) '<---Error 91 thrown here
.Subject = "DATA PACKAGE " & Range("K4").Value
.To = Range("I15").Value
.BODY = ""
.attachments.Add PDFData
On Error Resume Next
.SEND
On Error GoTo 0
End With
Kill PDFData
If IsCreated Then OutlApp.Quit
Set OutlApp = Nothing
End Function
答案 0 :(得分:2)
我无法100%确定,但似乎问题是这条线路失败了:
Set OutlApp = GetObject(, "OUTLOOK.APPLICATION")
这一行也是:
Set OutlApp = CreateObject("OUTLOOK.APPLICATION")
因此当你到达引发错误91的行时 - OutlApp
未设置。至于为什么这些线路出现故障,用户可能没有安装Outlook?
答案 1 :(得分:0)
尝试这样的事情(使用With块更改它):
Dim Mail
Set Mail = OutlApp.CreateItem(0)
With Mail
.Subject = "DATA PACKAGE " & Range("K4").Value
.To = Range("I15").Value
.BODY = ""
.attachments.Add PDFData
On Error Resume Next
.SEND
On Error GoTo 0
End With
Set Mail = Nothing
答案 2 :(得分:0)
因此,代码在经过几次Windows Update后无错误运行。 @JohnColeman认为它是正确的,对象变量没有被设置,但我没有线索为什么它没有被设置,而且,更新如何使一切运行顺利。< / p>