0

我刚刚开始一个项目,该项目需要我将多个 Excel 文件中的数据聚合到 Access 表中。棘手的部分是我的 Excel 数据不会在表格中,而是在像混乱一样的扫雷器中(你知道,地雷是随机放置的)。当然也不是完全随机的...

每个 Excel 文件本质上是一个包含预算信息和其他数据的项目的跟踪表。作为一个 FORM 意味着它是在视觉上而不是在逻辑上排列的。此外,数据跨越 4 个单独的工作表。

有人对有效地将这些数据导入 Access 有任何建议吗?

假设
1)每个excel文件在Access中只会变成一行数据。
2)每个excel文件都将被锁定,以便每次在完全相同的单元格中输入数据

基于这些假设,我正在考虑创建一个隐藏的工作表,其中包含引用每个单独单元格的适当标题值,从而创建一个合并的数据表。然后从 Access 中创建一个宏,允许我选择所需的工作簿并从该隐藏表中导入新记录。当然有很多关于如何从 excel 表中导入一个或多个记录的信息,所以如果我必须创建一个虚拟表,那就这样吧。

我应该考虑的任何替代方法?有什么技巧可以简化我概述的步骤吗?

提前致谢!

4

1 回答 1

0

这似乎是一个相当直接的任务。正如您所解释的,您正在从每个文件中读取相同的单元格位置,因此我会跳过在 Excel 中创建隐藏工作表的想法。从架构的角度来看,我同意 LS_Dev - 保持简单!所有你需要的是

  1. 一种选择机制,允许您标记和打开(多个)Excel 文件
  2. 打开和阅读每个选定的 Excel 文件并选择所需数据的例程
  3. 将数据写入一个(或多个)访问表的代码块

以上三个都可以在一个 Access VBA 模块中巧妙地完成

广告 1。

Sub XLSProcessMulti()
Dim Idx As Long

    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Pick one or more files"
        .Filters.Add "Worksheets", "*.xl*", 1

        If .Show = -1 Then
            For Idx = 1 To .SelectedItems.Count
                XLSProcessSingle .SelectedItems(Idx)
            Next Idx
        End If

    End With
End Sub

广告 2。

Sub XLSProcessSingle(FileName As String)
' needs creation of a reference to [Microsoft Excel xx.y Object Library]
Dim WB As Excel.Workbook
Dim Idx As Long

    Set WB = Excel.Workbooks.Open(FileName)

    ' dummy code here just to show a bit how the Excel object can be accessed
    Debug.Print WB.Name
    For Idx = 1 To WB.Worksheets.Count
        Debug.Print WB.Worksheets(Idx).Name
        Debug.Print WB.Worksheets(Idx).[A1] ' access a cell by its address enclosed in []
    Next Idx

    ' read sheets, ranges etc. by name or position into local variables
    ' and store them in Access table(s)

    ' X = WB.Worksheets(1).[A1]                  ' by position
    ' Y = WB.Worksheets("MySecondSheet").[B2]    ' by sheet name
    ' Z = WB.Worksheets(3).Range("MyNamedRange") ' single cell named range
    ' etc.


    WB.Close
End Sub

广告 3。

轮到你 :)

于 2013-08-02T08:50:39.013 回答