VBA-从Excel工作表导入SQL以访问数据库-执行错误3343

VBA-从Excel工作表导入SQL以访问数据库-执行错误3343,sql,excel,vba,ms-access,ms-access-2016,Sql,Excel,Vba,Ms Access,Ms Access 2016,我想构建一个SQL请求,以便将我的所有工作表内容存储到access DB中。为此,我构建了以下请求: sSQL = "INSERT INTO Archive_FP21 (Date_Histo,Caisse,Libelle,Reference_Contrat,Date_de_Nego,Date_Valeur,Echeance_Finale,Libelle_Index,Taux_Actuel,Capital_Origine,Capital_Restant_Du,Marge,Taux_du

我想构建一个
SQL
请求,以便将我的所有工作表内容存储到access DB中。为此,我构建了以下请求:

 sSQL = "INSERT INTO Archive_FP21 (Date_Histo,Caisse,Libelle,Reference_Contrat,Date_de_Nego,Date_Valeur,Echeance_Finale,Libelle_Index,Taux_Actuel,Capital_Origine,Capital_Restant_Du,Marge,Taux_du_cap,Taux_du_Floor,Derniere_Echance_INT,Derniere_Echeance_AMO,Interet,Prochaine_Echeance) " & _
    "SELECT * FROM [Feuil1$A:R] IN """ & WbPath & """"
但我面临以下问题:

3343无法识别的数据库格式

[我觉得我的问题出现在“&WbPath&”中的[Feuil1$A:R]中的
]

以下是我的完整代码子项:

Sub archiver()
    
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim sDb As String
    Dim sSQL As String
    Dim qdf As QueryDef
    Dim WbPath As String

    
WbPath = "C:\******\Extraction FP21 Mise en Forme Auto\16102020 - Copie.xlsx"

sDb = "C:\******\BaseFp21.accdb"
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(sDb)

sSQL = "INSERT INTO Archive_FP21 (Date_Histo,Caisse,Libelle,Reference_Contrat,Date_de_Nego,Date_Valeur,Echeance_Finale,Libelle_Index,Taux_Actuel,Capital_Origine,Capital_Restant_Du,Marge,Taux_du_cap,Taux_du_Floor,Derniere_Echance_INT,Derniere_Echeance_AMO,Interet,Prochaine_Echeance) " & _
"SELECT * FROM [Feuil1$A:R] IN """ & WbPath & """"


db.Execute sSQL

End Sub
注意此SQL请求的目标是将表'Feui1.Range(A:R)`中的所有数据添加到我的访问表中。 我不能一行一行地做,因为我有37K行要填写Access


我缺少什么?如何用VBA从Access DB中的excel中填充37K行?

从与Access连接内联的excel工作簿中进行查询不使用
in
运算符,而是使用括号中的标识符,并带有设置的参数,如标题和工作簿类型。使用时,中的
将在查询时起作用如果是外部Access数据库,但作为Excel工作簿,则无法识别该数据库格式

sSQL=“插入档案\u FP21(历史日期、Caisse、Libelle、参考合同,”_
&“国家的日期,国家的日期,最后的结局”_
&Libelle_索引,Taux_Actuel,首府_
&“首府餐厅,玛吉,塔克斯塔克斯,塔克斯塔克斯,塔克斯塔克斯”
&Derniere_Echance_INT,Derniere_Echeance_AMO,Interet_
&“Prochaine_Echeance”_
&“从[Excel 12.0 Xml;HDR=Yes;数据库=“&WbPath&]”中选择*。[Feuil1$A:R]”
执行sSQL

此外,请确保避免并明确选择命名列,尤其是在“插入-选择-追加”查询中,以进行列到列的映射。
select Col1、Col2、Col3等FROM
更易于阅读和维护,以防Excel列顺序发生调整或某些列不再存在。

您将VBA代码放在何处并运行?在要获取的Excel文件中,或在将要存档的Access中,或在另一个文件中?@Tech-On-the_Beach在将要存档的Excel文件以外的其他文件中。Access DB应该存储需要存档的文件的内容。但我的VBA模块位于存储数据的工作簿之外的其他工作簿中。希望我足够清楚@Tech-On-the_Beach我添加了一个问题的屏幕截图,希望这有帮助…我是Stuck谢谢你的回答,excel文件的列名是否应该与DB字段匹配?如果否,你会怎么做?否,通常在插入选择SQL查询中,插入表的名称不必与选择源的名称匹配,但相应的列应该是按数据类型排列。