【问题标题】:How to refer to Excel objects in Access VBA?如何在 Access VBA 中引用 Excel 对象?
【发布时间】:2011-08-09 09:48:22
【问题描述】:

为了能够使用 Access 2007 VBA 脚本中的 Excel 对象和常量,我必须进行哪些声明?

Dim wb As Workbook

Set objExcelApp = New Excel.Application

.Borders(xlEdgeBottom)

【问题讨论】:

    标签: vba ms-access-2007


    【解决方案1】:

    我不同意这两个答案。根本不创建引用,而是使用后期绑定:

      Dim objExcelApp As Object
      Dim wb As Object
    
      Sub Initialize()
        Set objExcelApp = CreateObject("Excel.Application")
      End Sub
    
      Sub ProcessDataWorkbook()
         Set wb = objExcelApp.Workbooks.Open("path to my workbook")
         Dim ws As Object
         Set ws = wb.Sheets(1)
    
         ws.Cells(1, 1).Value = "Hello"
         ws.Cells(1, 2).Value = "World"
    
         'Close the workbook
         wb.Close
         Set wb = Nothing
      End Sub
    

    您会注意到,上面代码的唯一区别是变量都被声明为对象,并且您使用 CreateObject() 实例化 Excel 实例。

    无论安装什么版本的 Excel,此代码都会运行,而如果安装了不同版本的 Excel,或者安装在不同的位置,使用引用很容易导致代码中断。

    此外,错误处理可以添加到上面的代码中,这样如果 Excel 实例的初始实例化失败(例如,因为 Excel 未安装或未正确注册),您的代码可以继续。使用参考集,如果未安装 Excel,您的整个 Access 应用程序将失败。

    【讨论】:

    • 我完全同意这一点,但是在最初开发代码时早期绑定是有用的,以便获得智能感知的好处,然后在一切正常后切换到后期绑定。
    • 你必须考虑声明一些你可能想要使用的常量
    • 多年来我一直是一个后期绑定的人,但是如果 .accdb 文件在服务器上并且访问它的唯一方法是从该服务器上,我已经切换到早期绑定。我明白你来自哪里。如果文件在计算机之间传输,我总是延迟绑定。
    【解决方案2】:

    首先您需要设置对 Microsoft Excel 对象库的引用(菜单:工具->引用),然后您可以访问所有 Excel 对象。

    添加参考后,您可以完全访问所有 Excel 对象。您需要在所有内容前面添加 Excel,例如:

    Dim xlApp as Excel.Application
    

    假设您在表单中添加了一个 Excel 工作簿对象并将其命名为 xLObject。

    这是访问此对象的工作表并更改范围的方法

    Dim sheet As Excel.Worksheet
    Set sheet = xlObject.Object.Sheets(1)
    sheet.Range("A1") = "Hello World"
    

    (I copied the above from my answer to this question)

    在 Access 中使用 Excel 的另一种方法是通过 Access 模块启动 Excel(shahkalpesh 在他的回答中描述的方式)

    【讨论】:

      【解决方案3】:

      模块内部

      Option Explicit
      dim objExcelApp as Excel.Application
      dim wb as Excel.Workbook
      
      sub Initialize()
         set objExcelApp = new Excel.Application
      end sub
      
      sub ProcessDataWorkbook()
          dim ws as Worksheet
          set wb = objExcelApp.Workbooks.Open("path to my workbook")
          set ws = wb.Sheets(1)
      
          ws.Cells(1,1).Value = "Hello"
          ws.Cells(1,2).Value = "World"
      
          'Close the workbook
          wb.Close
          set wb = Nothing
      end sub
      
      sub Release()
         set objExcelApp = Nothing
      end sub
      

      【讨论】:

      • 引用有问题?!
      • 使用工具菜单添加对“Microsoft Excel...对象库”的引用 -> 引用。
      猜你喜欢
      • 2017-08-24
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多