代码之家  ›  专栏  ›  技术社区  ›  Inception

在VBA中定义DLL函数时外部过程无效

  •  0
  • Inception  · 技术社区  · 6 年前
    Private Declare PtrSafe Function GenerateActiveTypicalWorksheet Lib "C:\Program Files\EPLAN\EEC One\2.7.3\Platform64\W3ApiBase.dll" Alias "EecOne.GenerateActiveTypicalWorksheet" () As Integer
    
    Call Application.Run("EecOne.GenerateActiveTypicalWorksheet")
    
    End Function
    
    Private Sub Workbook_Open()
    
        GenerateActiveTypicalWorksheet
    
    End Sub
    

    我正在尝试调用.dll文件中的函数,得到错误“Invalid outside procedure”。

    这是我试图使用的dll/API的唯一可用文档:

    Attached image

    而这个:

    Attached image

    1 回复  |  直到 6 年前
        1
  •  2
  •   Pᴇʜ    6 年前

    语法应该如下:

    Private Declare PtrSafe Function GenerateActiveTypicalWorksheet Lib "C:\Program Files\EPLAN\EEC One\2.7.3\Platform64\W3ApiBase.dll" Alias "EecOne.GenerateActiveTypicalWorksheet" () As Integer
    
    Private Sub Workbook_Open()
        GenerateActiveTypicalWorksheet
    End Sub
    

    请注意 Private Declare PtrSafe Function 就像是对库中函数的引用。只是为了让它可用,没有源代码,也没有 End Function . 它更像是一个函数的链接。


    问题是这两条线

    Call Application.Run("EecOne.GenerateActiveTypicalWorksheet")
    End Function
    

    不在函数或过程中,因此您得到了错误

    无效的外部过程