如何通过 Access VBA 代码处理 Excel 工作簿

How to process Excel workbooks via Access VBA code

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

我在哪里可以学习如何将我的 Excel VBA 代码转换为在 Access 中工作,或者至少在 Access [=46= 中处理 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

我明白了

Run-time error: '91'
Object variable ... not set.

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

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

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

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