gpt4 book ai didi

ms-access - 将 Excel 列表对象导入 Access 表

转载 作者:行者123 更新时间:2023-12-02 06:07:36 25 4
gpt4 key购买 nike

我有一个 Access 数据库,其中有一个名为 InventoryAvail 的表。我想在 Access 中按一个按钮,然后从特定的 Excel 文件导入特定的 Listobject 以填充 InventoryAvail 表。

我需要在按钮的事件中添加什么 VBA 代码?

Docmd.Transferspreadsheet 将不起作用,因为我不需要电子表格中的所有数据,我只想要特定 Listobject 中的数据。

该 Excel 文件名为 Inventory,位于我的桌面上。该工作表名为库存。List对象名为Available,并有两列:Part, Qty

InventoryAvail 表有两列:PartNumberQuantity

我需要将 Excel Listobject Available 中的数据导入到 Access 表 InventoryAvail

最佳答案

您是对的,由于某种原因 DoCmd.TransferSpreadsheet 不适用于命名范围。我曾经能够通过从中提取地址来破解它,但我必须打开工作簿。

无论如何,我找不到打开工作簿的方法

这应该适合你。

步骤:

  • 打开电子表格
  • 将列表框数据读入数组
  • 使用您的表打开记录集
  • 使用 AddNew 方法将每行数据传递到表中
  • 清理

这是代码

Public Sub AddInventory()

On Error GoTo Err_Handler

Const IMPORT_TABLE As String = "InventoryAvail"

Const IMPORT_FILE As String = "yourspreadsheetfullpathname"
Const SHEET_NAME As String = "Sheet1"
Const LISTBOX_NAME As String = "List1"

Dim xlApp As Object
Dim xlBook As Object
Dim rs As DAO.Recordset

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.WorkBooks.Open(IMPORT_FILE, , True) ' open as readonly

Dim xlList As Variant
Dim intRow As Integer

' creates an array from ListObject values
xlList = xlBook.Worksheets(SHEET_NAME).ListObjects(LISTBOX_NAME).DataBodyRange.Value

xlBook.Close
xlApp.Quit
Set xlApp = Nothing

Set rs = CurrentDb.OpenRecordset(IMPORT_TABLE)
With rs
For intRow = LBound(xlList) To UBound(xlList)
Debug.Print xlList(intRow, 1) & ": " & xlList(intRow, 2)
.AddNew
.Fields(0).Value = xlList(intRow, 1)
.Fields(1).Value = xlList(intRow, 2)
.Update
Next intRow
.Close
End With

Set rs = Nothing
Exit Sub

Err_Handler:
MsgBox Err.Description

End Sub

关于ms-access - 将 Excel 列表对象导入 Access 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50651148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com