在VBA中获取UCase,Trim,Left libary错误

时间:2016-06-07 21:41:43

标签: vba

我有一个打开excel文件的应用程序。当我在使用应用程序打开的excel中运行宏功能时。我在“UCase”“Trim”“Left”上得到Compile错误“找不到项目或库”只是为了举几个例子。在我的宏函数中,我有多个使用上述函数的情况。我还引用了“Visual Basic For Application”,“Microsoft Excel 12.0对象库”,“OLE自动化”,“Microsoft Office 12.0库”,Microsoft Forms 2.0对象库。“

如果我在没有应用程序的情况下单独运行excel,则没有错误。有没有解释为什么会发生这种情况?图书馆混合匹配?适用于开发人员和一些用户,但对于其他用户,他们将得到这些错误。

2 个答案:

答案 0 :(得分:1)

这是因为这些方法属于Excel应用程序,因此您必须通过在Excel对象名称之前添加其名称(以及可能还有其相关成员)来调用它们,您必须先实例化

例如

示例1:后期绑定

Option Explicit

Sub LateBindingExcel()
    Dim xlApp As Object 'declaring your application object as of "Object" type doesn't require any reference to Excel library

    ' open an Excel session
    Set xlApp = CreateObject("Excel.Application")

    ' call Excel application WorksheetFunction.Trim()
    MsgBox xlApp.WorksheetFunction.Trim(" see    how spaces    get trimmed    by    this   function  ")
End Sub

示例2:早期绑定

Option Explicit

Sub EarlyBindingExcel()

    Dim xlApp As Excel.Application 'declaring your application object as of "Excel.Application" type requires adding Excel library reference to your project

    ' open an Excel session
    Set xlApp = CreateObject("Excel.Application")

    ' call Excel application WorksheetFunction.Trim()
    MsgBox xlApp.WorksheetFunction.Trim(" see    how spaces    get trimmed    by    this   function  ")
End Sub

两种约束"样式之间的一个明显差异"是后者允许您利用IntelliSense功能,而前者不是

答案 1 :(得分:0)

可能是由于工具参考中的“ Visual Basic for Applications”引用了不存在的库。如果开发人员使用其自定义目录中的库而不是默认库,则可能会发生这种情况。

有两种解决方法。

  1. 使用前缀VBA全局替换所有与字符串相关的功能(格式,左,右,中,修剪等)。例如VBA。左这将强制在标准库中使用功能。
  2. 将所有excel工作表移至另一个新工作簿,然后从“工具”参考中选择“ Visual Basic for Applications”。