软件更新/重新安装

时间:2015-07-20 15:12:34

标签: excel-vba vba excel

我得到"错误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

3 个答案:

答案 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>