Excel VBA程序在第二次运行CreateDLL访问DLL语句时失败

时间:2019-03-21 20:00:41

标签: excel vba

我在Windows 10 Pro计算机上运行了一些Excel 2010 VBA代码。该代码为DLL创建了一个对象,并且在程序的末尾将该对象设置为空。第一次代码运行良好,但是如果再次运行,它将在CreateObject行上崩溃,并显示以下错误消息:

运行时错误'-2147467259(80004005) 自动化错误 未指定错误

似乎DLL对象没有被释放,这也许就是为什么在尝试第二次创建该对象时它崩溃的原因。我发现此网页可能与以下内容有关: https://support.microsoft.com/en-us/help/178510/excel-automation-fails-second-time-code-runs

下面是一些示例代码,并指出了崩溃的行。任何想法如何解决/解决这个问题?此问题可能与在Windows 10上运行Office 2010有关吗?该代码可在我以前的Windows 7计算机上使用。顺便说一句,我距离VBA专家还很远,所以我正在使用的某些术语可能已经关闭。

Sub AddOverlayToPDF()
    Dim BasePath As String
    Dim InFolder As String
    Dim OutFolder As String
    Dim FileName As String
    Dim PDF, rslt

    BasePath = "C:\Users\macke\Desktop\"
    InFolder = BasePath & "Comm Charts - No Legend\"
    OutFolder = BasePath & "Comm Charts\"

    Set PDF = CreateObject("pdf.Meld") ' <-- *** THIS LINE FAILS ON SECOND RUN ***
    FileName = Dir(InFolder & "*")
    Do While Len(FileName) > 0
        Debug.Print FileName
        PDF.setRevOverlay
        PDF.setRepeat
        PDF.setOverlayPages ("9-11")

        PDF.setInFile "C:\Users\macke\Desktop\Legend Overlay.pdf"
        PDF.setInFile InFolder & FileName
        PDF.setOutFile OutFolder & FileName

        rslt = PDF.buildPDF
        If rslt < 0 And rslt <> -10 Then
            MsgBox ("Error " & rslt)
        End If
        PDF.setReset

        FileName = Dir
    Loop

    Set PDF = Nothing
End Sub

0 个答案:

没有答案