Excel范围到现有访问表

时间:2014-08-04 09:47:04

标签: vb6 excel-2010 ado

我有一个VB6应用程序,我需要将excel文件中的行/列数据插入到访问数据库中。

我的访问数据库的连接字符串:

db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb" & ";Persist Security Info=False;Jet OLEDB:Database Password=*****"

我正在尝试使用此SQL字符串插入数据:

Dim sql As String
sql = "INSERT INTO tbl_trade_tcp ("
sql = sql & "[field_A], "
sql = sql & "[field_B], "
sql = sql & "[field_C]"
sql = sql & ") "
sql = sql & "SELECT * FROM [Excel " & xlApp.Application.Version & ";HDR=NO;IMEX=1;Database=" & wb.FullName & "].[" & ws.Name & "$AH3:AJ36,B3:AG36]"

db.Execute sql

现在的问题是不断收到此错误消息:

Cannot find installable ISAM

出于参考目的,我使用了用于创建sql字符串的信息:

Fastest way to copy an Excel range to Access?

Using Excel VBA to Export data to Ms.Access Table

1 个答案:

答案 0 :(得分:0)

在查看各种帖子后,我发现了以下内容:

  1. 而不是使用当前的机器' Excel版本,需要默认为Excel 8.0

    SELECT * FROM [ Excel" &安培; xlApp.Application.Version& " ; HDR = NO; IMEX = 1;数据库=" &安培; wb.FullName& "。] [" &安培; ws.Name& " $ AH3:AJ36,B3:AG36]"

    应该是

    SELECT * FROM [ Excel 8.0 ; HDR = NO; IMEX = 1;数据库=" &安培; wb.FullName& "。] [" &安培; ws.Name& " $ AH3:AJ36,B3:AG36]"

    参考:here

  2. 确保列名与excel文件匹配。如果excel文件中没有列名,则需要逐个声明它们。

    参考:here