从Excel填充Access记录

从Excel填充Access记录,excel,ms-access,vba,record,Excel,Ms Access,Vba,Record,我正在Access 2010中创建一个表单,该表单将为特定文件夹中的每个Excel文件创建一个记录,并使用来自不同单元格的信息填充字段。宏用Excel工作簿的所有文件名(各种字母数字序列)填充数组,然后遍历这些文件并为每个Excel工作表创建新记录 Private Sub PopulateArray_Click() Dim strListOfFiles() As String Dim intCount As Integer intCount = 0 Dim sF

我正在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
Private Sub PopulateArray\u Click()
Dim strListOfFiles()作为字符串
Dim intCount为整数
整数=0
将文件设置为字符串
sFile=Dir$(“P:\Share\Manufacturing\Propper\Finalized”&“\*.*”,vbDirectory或vbHidden或vbSystem或vbReadOnly或vbArchive)
直到sFile=vbNullString为止
如果是sFile“.”那么“相对路径”表示此目录
如果文件“.”那么“相对路径”表示父目录
ReDim将strListOfFiles(0到(intCount+1))保留为字符串
strListOfFiles(intCount)=s文件
intCount=intCount+1
如果结束
如果结束
sFile=Dir$()
环
Dim MyDB作为DAO.Database
作为DAO.Recordset的Dim MYR
设置MyDB=CurrentDb()
Set MyRS=MyDB.OpenRecordset(“Record”,dbOpenDynaset)
对于索引=0到UBound(strListOfFiles)
迈尔斯·艾德纽
迈尔斯![SerialNumber]=“P:\Share\Manufacturing\Propper\Finalized\[”&strListOfFiles(索引)&“]订单输入”!B15”
最新情况
下一个
端接头

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

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

然后,您可以使用
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
go
References
,然后检查Excel对象库。

不幸的是,您还有很多工作要做。你可以选择1。为每个excel工作簿打开另一个DAO对象并引用该单元格;或2。打开excel,打开工作簿并检索该单元格。你所做的只是给序列号分配了一个字符串。我想,我一直在学习VBA有多强大。你能用哪种更容易的方法帮我吗?至于访问其他文件,我非常模糊,尤其是当它们是不同类型的文件时。如果您真的需要一个特定的单元格,而这就是宏应该做的,那么继续使用DAO。以我的经验,情况从来不是这样。所以我每次都会选择Excel路线。我需要十几个不同的单元格。你能给我提供一些如何设置的例子吗?