从Excel填充访问记录

时间:2012-10-05 23:57:29

标签: excel ms-access access-vba record

我正在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 个答案:

答案 0 :(得分:0)

当然可以,因为您还没有打开工作簿。您需要包含对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对象库。