我有一份预算工作表"我正在为我的公司建设。工作表的目的是让所有直线经理/主管使用相同的模板,并将他们的费用(预算)单独发布到我预制的Access数据库,为我们的整个业务形成一个大的综合预算。
预算工作表已经完成并且运作良好。所有费用都合并到一个"数据库"我的工作表中的选项卡,并准确格式化我的Access数据库的设置方式。现在我可以建立一个预算,并手动将数据复制/粘贴到我的Access表中,没有任何错误。
我希望通过制作它来改进这一点,这样我就可以点击"发布预算" Excel中的按钮,所有数据都发布到我的Access数据库,而根本没有让经理/主管进入Access。
任何人都知道我会这样做吗?我曾经使用Excel / Access连接,但只是将Access数据检索到Excel中 - 反之亦然。
谢谢!
答案 0 :(得分:0)
我创建了一个名为MyTestWorkbook.xlsm的宏启用工作簿并将其保存。我转到VBA编辑器(Alt + F11),然后转到Insert> Module,它创建了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
行上指定的锁类型很重要,老实说,我不应该理解它 - 但是你可以将记录集打开为只读,或者锁定你正在读取的记录,这样得到很好地理解使用什么锁类型会有所帮助。我真的建议从用户表单输入,但这只是个人偏好。
希望这有帮助 -