如何在Excel VBA程序中将作为variables存储的数据传输到Access数据库

我有一系列Excel VBA计算中的数据存储为VBA代码中的variables。 我想在代码结束时做的是将这些variables中的数据作为新logging传送到MS Access数据库中。

Access数据库已经存在并准备就绪。 在将数据传输到Access之前,是否必须将variables中的数据放入工作表上的单元格中?

下面是我尝试存储在数据库中的VBA代码中的variables示例(variables名称对应于数据库列标题)

Dim customerName As String Dim customerAge As Integer Dim customerSpend As Double customerName = "Tim" customerAge = 26 customerSpend = 12876 

这是我迄今为止设法写入的代码来尝试和传输数据,但是我被困在'Range'部分,因为它们是variables而不是单元格的范围:

 Dim strPath As String Dim objAccess As Object strPath = "C:\db1.accdb" Set objAccess = CreateObject("Access.Application") Call objAccess.OpenCurrentDatabase(strPath) objAccess.Visible = True Call DoCmd.TransferSpreadsheet(acImport, acSpreadsheetTypeExcel12, CustomerDetails, Range) 

如何将存储在VBA代码中的variables中的数据传输到Access数据库的相应列中以创build新logging?

目前,您将Access视为其MS Office 前端 GUI应用程序,而不是可以接收SQL调用的关系后端数据库。 DoCmd.TransferSpreadsheet是一个Access应用程序的方法,需要一个保存的Excel电子表格,你不使用。

但是,您可以使用SQL附加查询将variables值传递到Access表中。 而不仅仅是Access,像VBA这样的任何应用层代码都可以连接到像Access这样的数据库,并用SQL追加/更新/删除表数据。 下面用DAO(默认的Access数据库API)演示如何使用查询参数化的行业最佳实践。

 Sub RunSQL() Dim objAccess As Object Dim db As Object, qdef As Object Dim strPath As String, strSQL As String Dim customerName As String, customerAge As Integer, customerSpend As Double customerName = "Tim": customerAge = 26: customerSpend = 12876 strPath = "C:\db1.accdb" ' OPEN ACCESS APPLICATION Set objAccess = CreateObject("Access.Application") objAccess.OpenCurrentDatabase strPath ' OPEN INTERNAL DATABASE Set db = objAccess.CurrentDb ' PREPARE STATEMENT strSQL = "PARAMETERS [nameparam] TEXT(255), [ageparam] INTEGER, [spendparam] DOUBLE;" _ & " INSERT INTO CustomerDetails ([name], [age], [spend]);" ' BUILD TEMP QUERYDEF Set qdef = db.CreateQueryDef("", strSQL) ' BIND PARAMS TO VARIABLES qdef!nameparam = customerName qdef!ageparam = customerAge qdef!spendparam = customerSpend ' EXECUTE ACTION QUERY qdef.Execute Set qdef = Nothing Set db = Nothing Set objAccess = Nothing End Sub