将excel数据作为记录提交到Access中



我正在为我的公司制作一个"预算工作表"。工作表的目的是让所有部门经理/主管使用相同的模板,并可以将他们的费用(预算)单独发布到我预先制作的Access数据库中,以形成我们整个业务的一个大型综合预算。

预算工作表已经做好了,而且工作得很好。所有的费用都合并到我的工作表中的"数据库"选项卡中,并格式化了我的Access数据库的设置方式。现在我可以建立一个预算,并手动复制/粘贴数据到我的访问表,没有任何错误。

我想改进这一点,这样我就可以在Excel中点击"发布预算"按钮,所有数据都发布到我的Access数据库中,而无需直线经理/主管进入Access。

有人知道我要怎么做吗?我以前曾与链接Excel/Access工作过,但只是将Access数据检索到Excel中-反之亦然。

谢谢! !

我创建了一个名为MyTestWorkbook的宏启用工作簿。XLSM并保存它。我去了VBA编辑器(Alt+F11),然后去插入>模块,它创建了Module1。现在你需要转到工具>参考和检查/启用"Microsoft ActiveX数据对象2.8库",这使它能够访问ADO库,没有它将无法运行。

所以目标数据库被称为database。accdb,它位于C:。它有一个表tblAccess和一个列ID。在我的工作簿中,单元格A1中有一个数字。这是module1中的代码——

Sub TestACEConnection()
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.Provider = "Microsoft.ACE.OLEDB.12.0"
    cnn.ConnectionString = "Data Source=C:Database.accdb"
    cnn.Open
    Dim rst As ADODB.Recordset
    Set rst = New ADODB.Recordset
    rst.Open "tblAccess", cnn, adOpenForwardOnly, adLockOptimistic, adCmdTable
    Dim myValue As Integer
    myValue = Range("A1").Value
    rst.AddNew
    rst.Fields("ID") = myValue
    rst.Update
    rst.Close
    cnn.Close
End Sub

接下来的一些考虑事项,仅通过"范围"引用单元格而不指定工作表,工作簿和excel实例可能会导致问题,但我忽略了这一点以保持干净。在rst.open行指定的锁类型很重要,老实说,我不理解它,以及我应该-但你可以打开记录集为只读,或锁定记录,你正在读取,所以得到一个很好的理解什么锁类型使用将有所帮助。我真的建议从用户表单输入,但这只是个人喜好。

希望有帮助-

最新更新