【问题标题】:How to fix "class does not support automation or does not support expected interface"如何修复“类不支持自动化或不支持预期接口”
【发布时间】:2019-05-27 23:37:38
【问题描述】:

当我尝试将工作表导出为 PDF 时,我的一个宏给了我错误“类不支持自动化或不支持预期的界面”。

我将我的 excel 库存文件从运行 Windows 7 的 MacBook 移到运行 Windows 10 的 PC 上。我每天使用的宏都可以工作,除了一个包含将工作表导出为 PDF 的宏。我研究了这个错误,发现自从我从 Windows 7 迁移到 Windows 10 后,dll 文件可能存在问题,这是有道理的,因为同一个宏在我的 Windows 7 机器上运行了几个月。 完整的错误是: “运行时错误‘430’: 类不支持自动化或不支持预期的接口。” 我对 exe 和 dll 文件不是很有经验,所以我找不到“更新”它们的方法

Sub ExportPDFProforma()

Application.ScreenUpdating = False

Sheets("Sheet1").Select

Dim ExportName As String

If Range("B5").Value = "" Then
    ExportName = "Test"
Else
    ExportName = Range("B5").Value
End If

Sheets("Sheet1").Copy Before:=Sheets(1)
Sheets("Sheet1 (2)").Select
Sheets("Sheet1 (2)").Move After:=Sheets(5)
Sheets("Sheet1 (2)").Select
Sheets("Sheet1 (2)").Name = "Print Preview"
Range("A1:L49").Select
Range("L49").Activate
Selection.Copy
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False

Call PreviewFormatting

Dim Shp As Shape

For Each Shp In ActiveSheet.Shapes
If Not Shp.Type = msoPicture Then
Shp.Delete
End If
Next Shp

If Range("B4") = "x" Then
Call HideBlankRows(Range("F14:F23"), Range("D36:D45"))
Else
Call HideBlankRows(Range("F14:F23"), Range("D34:D43"))
End If

Worksheets("Print Preview").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\...", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

Range("A1:B1").Select

Application.DisplayAlerts = False
Sheets("Print Preview").Delete
Application.DisplayAlerts = True
Sheets("Sheet1").Select
Application.ScreenUpdating = True

End Sub

错误行是:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\...", 
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

这也可能只是某个地方的语法错误,因为 Windows 10 上的 VB 版本较新。 有人知道解决方法或解决方法吗?

【问题讨论】:

    标签: excel vba object export


    【解决方案1】:

    试试这样的。我看不到要分析的完整代码,所以看看我的,也许你会发现一些差异。

    Option Explicit
    Sub ExportPDF()
    Dim PDFFile as String
    
    PDFFile = “C:\someFolder\MyFile.PDF”
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFFile, 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=OpenPDFAfterCreating
    
    End Sub
    

    【讨论】:

    • 我试图用你的代码替换我的代码,但它仍然返回同样的问题。我在主要问题中添加了完整的代码,看看是否有我遗漏的东西。
    • @MichelChalfoun 检查放置文件路径的行。 文件名:=“C:\someFolder\myFilr.PDF”
    • 我检查了它,它在我的另一台计算机上运行良好。我只是没有在这里的问题上发布它。它包括一个 2 个字符串和一个由 '&' 分隔的变量。
    • @MichelChalfoun 如果您发现我的回答有帮助并解决了您的问题,请接受该回答,以便其他人知道它可以解决您的问题。
    • 如果它确实解决了问题,但它没有。感谢您的帮助,但我最终在笔记本电脑上修复了 Office,它修复了 VBA 中的一些问题,包括这个问题,现在一切运行顺利。
    猜你喜欢
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    相关资源
    最近更新 更多