我正在为我的公司制作一个"预算工作表"。工作表的目的是让所有部门经理/主管使用相同的模板,并可以将他们的费用(预算)单独发布到我预先制作的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
行指定的锁类型很重要,老实说,我不理解它,以及我应该-但你可以打开记录集为只读,或锁定记录,你正在读取,所以得到一个很好的理解什么锁类型使用将有所帮助。我真的建议从用户表单输入,但这只是个人喜好。
希望有帮助-