从 Excel 填充访问记录

Posted

技术标签:

【中文标题】从 Excel 填充访问记录【英文标题】:Populate Access Record from Excel 【发布时间】:2012-09-27 03:43:17 【问题描述】:

我正在 Access 2010 中创建一个表单,它将为特定文件夹中的每个 Excel 文件创建一条记录,并使用来自不同单元格的信息填充字段。该宏使用 Excel 工作簿的所有文件名(各种字母数字序列)填充一个数组,然后遍历这些文件并为每个 Excel 工作表创建一条新记录。

Private Sub PopulateArray_Click()
    Dim strListOfFiles() As String
    Dim intCount As Integer
    intCount = 0

    Dim sFile As String
    sFile = Dir$("P:\Share\Manufacturing\Propeller\Finalized" & "\*.*", vbDirectory Or vbHidden Or vbSystem Or vbReadOnly Or vbArchive)
    Do Until sFile = vbNullString
        If sFile <> "." Then ' relative path meaning this directory
            If sFile <> ".." Then ' relative path meaning parent directory
                ReDim Preserve strListOfFiles(0 To (intCount + 1)) As String
                strListOfFiles(intCount) = sFile
                intCount = intCount + 1
            End If
        End If
        sFile = Dir$()
    Loop

    Dim MyDB As DAO.Database
    Dim MyRS As DAO.Recordset
    Set MyDB = CurrentDb()
    Set MyRS = MyDB.OpenRecordset("Record", dbOpenDynaset)

    For Index = 0 To UBound(strListOfFiles)
        MyRS.AddNew
        MyRS![SerialNumber] = "'P:\Share\Manufacturing\Propeller\Finalized\[" & strListOfFiles(Index) & "]Order Input'!B15"
        MyRS.Update
    Next
End Sub

我已经完成了大部分工作,但最后一步让我卡住了。问题出现在 For 循环中的“MyRS![SerialNumber]”位上。目前它所做的只是打印单元格的(正确)文件路径,而不是单元格本身的值。

【问题讨论】:

不幸的是,您还有很多工作要做。您可以 1. 为每个 Excel 工作簿打开另一个 DAO 对象并引用该单元格;或 2. 打开 excel,打开工作簿并检索该单元格。您所做的只是为 SerialNumber 分配了一个字符串。 我想了很多,我一直在学习,试图了解 VBA 有多么强大。你能帮我用任何一种更容易的方法吗?就访问其他文件而言,我很模糊,尤其是当它们是不同类型的时候。 如果您真的需要一个特定的单元格,而这就是宏所要做的所有事情,那么请继续使用 DAO。以我的经验,从来都不是这样。所以我每次都会选择Excel路线。 我需要十几个不同的单元格。您能否将我链接到如何设置的任何示例? 【参考方案1】:

当然可以,因为您还没有打开工作簿。您需要包含对 MS Excel 对象库的引用(在我的计算机上使用 MSO 2007 的最新版本是 11.0)。

然后您可以使用Excel“命名空间”来访问 Excel 对象,如下所示:

Dim xlApp as Excel.Application
Dim xlWb as Excel.Workbook
Dim cell as Excel.Range

With xlApp
    .Visible = true
    Set xlWb = .Workbooks.Open(...)
End With

// And so on...

编辑:要包含引用,您需要按 Alt+F11 进入 VBA 编辑器,然后在 Tools 进入 References 并检查 Excel 对象库。

【讨论】:

以上是关于从 Excel 填充访问记录的主要内容,如果未能解决你的问题,请参考以下文章

自动填充中断一条记录 [Excel-VBA]

打开从 Excel 工作表单元格中选择的特定记录的访问表单

如何将自动填充的表单记录(从另一条记录创建)添加到访问表中?

【原创】使用EXCEL数据自动填充WORD文档中的表格

从 Excel 更新 SQL Server 表,然后填充剩余的列数据

怎么在SQL里逐行修改数据