如何通过Access VBA代码

时间:2015-11-14 02:12:32

标签: excel-vba access-vba ms-access-2010 excel-2013 vba

我有一个Excel用户表单和一些Excel VBA代码,可以将一些工作表数据转换为可以导入Access应用程序的格式。 代码工作正常,但我已经决定,如果将表单和代码移到驻留在Access应用程序中而不是电子表格中,那么开发和操作会更好。

在哪里可以了解如何将Excel VBA代码转换为在Access中工作,或者至少在Access VBA中处理Excel的编码参考?

完全基于 VBA ACCESS - Loop Excel workbooks 到目前为止,我已经设法从这开始了(注意:以下所有内容都只是片段。):

Private source_empl_col As Integer
Private xl_app As Object

Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Open (workbook_txt)

我已成功转换

Private source_sheet As Worksheet

Set source_sheet = Worksheets(source_cbo.Text)
source_sheet.Activate

Dim ws As Integer
For ws = 1 To Worksheets.Count
    source_cbo.AddItem Worksheets(ws).Name

从Excel VBA进入Access VBA

xl_app.Sheets(source_cbo).Activate

Dim ws As Integer
For ws = 1 To xl_app.Worksheets.Count
    source_cbo.AddItem xl_app.Worksheets(ws).Name

没有错误。但是,当谈到转换时

source_empl_col = Range(empl_col_txt & 1).Column

从Excel VBA进入Access VBA

source_empl_col = xl_app.Sheets(source_cbo).Range(empl_col_txt.Text & 1).Column

甚至只是

source_empl_col = xl_app.Sheets(source_cbo).Range("B1").Column

我得到了

  

运行时错误:'91'
  对象变量...未设置。

我需要翻译的代码太多,所以它在Access中工作,却不知道我在做什么。 需要一些指导!

1 个答案:

答案 0 :(得分:2)

在Access VBA中,要使用外部Office应用程序的对象模型,即此处Excel(但同样适用于Outlook,PowerPoint,Word等的规则)需要显式声明外部对象。

您需要的是workbook对象的显式声明和设置。您从 app 直接跳到,忘记了中间人 - 工作簿

Dim xl_app As Object, xl_wkb As Object
Dim source_empl_col As Integer

Set xl_app = CreateObject("Excel.Application")
Set xl_wkb = xl_app.Workbooks.Open (workbook_txt)

source_empl_col = xl_wkb.Sheets(source_cbo).Range(empl_col_txt.Text & 1).Column

或者,您甚至可以设置worksheet对象:

Dim xl_app As Object, xlwkb As Object, xl_wks As Object
Dim source_empl_col As Integer

Set xl_app = CreateObject("Excel.Application")
Set xl_wkb = xl_app.Workbooks.Open (workbook_txt)        
Set xl_wks = xl_wkb.Sheets(source_cbo)

source_empl_col = xl_wks.Range(empl_col_txt.Text & 1).Column