我是全新的访问者,并且正在努力了解如何将访问表/列/行格式与excel在VBA中导出相关联。
我创建了一个名为 Data 的访问表和三列 Food,Drinks,Color 。
我想从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
答案 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