从Excel VBA导出数据到Access

时间:2018-04-03 19:07:28

标签: excel vba ms-access export

我是全新的访问者,并且正在努力了解如何将访问表/列/行格式与excel在VBA中导出相关联。

我创建了一个名为 Data 的访问表和三列 Food,Drinks,Color

Access Table

我想从excel电子表格中将这些单元格范围导出到Access:

Foodrng = Workbooks(xlFile).Sheets("ToBeExported").Range("D6")
Drinksrng = Workbooks(xlFile).Sheets("ToBeExported").Range("E6")
Colorrng= Workbooks(xlFile).Sheets("ToBeExported").Range("B12:B21")

网上的所有内容都说我应该使用它,因为我的版本:

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;"

我想使用INSERT TO格式化来写入我的数据库,因为我将扩展数据库列很多,我觉得这是跟踪哪些内容最简单的方法。

strSql = "INSERT INTO Data (Food, Drinks, Color) VALUES (Foodrng, Drinksrng,Colorrng)"

执行时总是会出现语法错误:

Set rs = cn.Execute(strSql)

使用上述方法导出到Access数据库的正确方法是什么?任何/所有信息都将非常有用,因为我是Access的新手

我的完整代码:

    Foodrng = Workbooks(xlFile).Sheets("ToBeExported").Range("D6")
    Drinksrng = Workbooks(xlFile).Sheets("ToBeExported").Range("E6")
    Colorrng= Workbooks(xlFile).Sheets("ToBeExported").Range("B12:B21")

    Set cn = CreateObject("ADODB.Connection")
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source= C:\Users\User1\MyDBase.accdb"
    cn.Open strConnection

   strSql = "INSERT INTO Data (Food, Drinks, Color) VALUES (Foodrng, Drinksrng,Colorrng)"

    Set rs = cn.Execute(strSql)
    'MsgBox rs.Fields(0) & " rows in MyTable"
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing

2 个答案:

答案 0 :(得分:1)

使用查询插入时,需要使用参数传递值。我强烈建议使用记录集而不是插入查询。

普通插入查询一次只能插入一行。您需要调整代码以一次插入一行。您可以使用记录集,也可以为每一行执行查询。

isSetXyz()

答案 1 :(得分:0)

也许还有另外一两种方法,也许值得考虑。

第一个方法是将Excel电子表格设置为Access中的链接表-也许可以使用VBA完成。这将节省您复制数据的需求。您也许还可以设置目标工作表并使用insert..select直接从ADODB中将数据从Access中插入Excel。

第二,如果您的要求允许的话,将完全完全避免使用Access。 Excel可以在某种程度上用作数据库并支持SQL查询。 https://selectcompare.com/blogs/news/write-select-statements-for-excel-spreadsheets