【问题标题】:Access import from Excel , DoCmd.TransferSpreadsheet acImport访问从 Excel 导入,DoCmd.TransferSpreadsheet acImport
【发布时间】:2021-05-16 13:44:47
【问题描述】:

我从 SAP-BI 服务器创建了一些数据,它向我发送了一个 Excel-2013 文件,然后我将此 excel 文件导入 Access-2013 以进行进一步处理。

我在 VBA 代码中找到了导入数据的字符串,它看起来像这样:

DoCmd.TransferSpreadsheet acImport, , "Ttable", fileName, True, "abclist$"

access中的表名为Ttable excel 电子表格名为 abclist

到目前为止,当前流程运行良好。然而,最近数据量已增加到超过 104 万个原始数据(这似乎是 excel 在一个电子表格中可以处理的最大原始数据数),然后 SAP-BI 将剩余数据导出到名为 abclist 的第二个电子表格中( 1)

如果有两个电子表格,如何更改 VBA 代码以动态允许两个电子表格,并且如果 excel 文件中只有一个电子表格,它将继续工作?

【问题讨论】:

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


【解决方案1】:

打开excel文件,将工作表名称作为数组导入并执行命令。

Dim App As Object
Dim vFn() As Variant, v As Variant
Dim Wb As Object, Ws As Object
Dim n As Integer

Set App = CreateObject("Excel.Application")
Set Wb = App.workbooks.Open(FileName)
For Each Ws In Wb.worksheets
    n = n + 1
    ReDim Preserve vFn(1 To n)
    vFn(n) = Ws.Name & "$"
Next Ws
Wb.Close (0)
Set Wb = Nothing
App.Quit
Set App = Nothing

For Each v In vFn
    DoCmd.TransferSpreadsheet acImport, , "Ttable", FileName, True, v
Next v

【讨论】:

    【解决方案2】:

    我想将 excel 数据导入 access。 通常有两个电子表格“AAA”和BBB“ 这些电子表格将导入 Access 中的两个表(名称 tAAA 和 tBBB)中。

    但是但有时如果数据量很大,会有一个3:rd电子表格名称“AAA(1)”

    如果不存在,如何忽略导入 3:rd 电子表格名称 AAA(1)? 如果丢失,我会收到错误消息。

    DoCmd.TransferSpreadsheet acImport, , "tAAA", fileName, True, "AAA$"
    DoCmd.TransferSpreadsheet acImport, , "tAAA", fileName, True, "AAA(1)$"
    DoCmd.TransferSpreadsheet acImport, , "tBBBs", fileName, True, "BBB$"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      相关资源
      最近更新 更多