将Excel单元格值插入现有SQL表

将Excel单元格值插入现有SQL表,sql,sql-server,excel,vba,Sql,Sql Server,Excel,Vba,可能重复: 我刚刚开始学习VBA,我已经成功地从SQL Server中创建的数据库导入了数据,现在我正在尝试将数据从Excel导出到同一个数据库中 以下几点效果不错: Dim cnState As ADODB.Connection Dim sSQL As String Set cnState = New Connection With cnState .Provider = "SQLOLEDB" .ConnectionString = "server=.\SQLEXPRESS; Trusted

可能重复:

我刚刚开始学习VBA,我已经成功地从SQL Server中创建的数据库导入了数据,现在我正在尝试将数据从Excel导出到同一个数据库中

以下几点效果不错:

Dim cnState As ADODB.Connection
Dim sSQL As String
Set cnState = New Connection
With cnState
.Provider = "SQLOLEDB"
.ConnectionString = "server=.\SQLEXPRESS; Trusted_Connection=Yes; database=SIM_PROJ"
.Open
End With
sSQL = "Insert Into Alunos Values ('3', 'Tiago Aleixo', 'Rua dos Pincéis' , '1990-05-26' , 'M' , 'Multimédia' , 'D')"
cnState.Execute sSQL

End Sub

Private Sub btn_goMenu_Click()

Sheet1.Select
唯一的问题是,我只想弄清楚如何通过代码插入实际值,我希望能够在Excel中读取整行内容并将其插入数据库

大概是这样的:

sSQL = "Insert Into Alunos Values (Range(A4).Value, Range(B4).Value, Range(C4).Value, Range(D4).Value, Range(E4).Value, Range(F4).Value, Range(G4).Value)"

也就是说,我只希望插入第4行中的值。

可能您必须以更增量的方式构建字符串,如:

  SQL = "INSERT INTO alunos VALUES ('" + Range(A4).Value + "', '" + Range(A5).Value + "', '"...

您显示的语法看起来像是试图将字符串RangeA4.Value插入数据库。

将您的文件保存为逗号分隔的CSV文件,然后您可以使用如下大容量插入。 声明@sql varcharmax 使用FIELDTERMINATOR='从'+@File+'设置@sql=BULK INSERT TAB_UY420','
exec@sql

我尝试了以下操作:sSQL=Insert到Alunos值“+RangeA3.Value+”、“+RangeB3.Value+”、“+RangeC3.Value+”、“+RangeD3.Value+”、“+range3.Value+”、“+RangeF3.Value+”、“+range3.Value+”,但出现了:类型不匹配错误,这可能是因为我试图将日期插入数据库?…是的,这似乎是可能的。试着做一些列作为测试,这些列只是普通的旧数字或字符串。Excel将日期存储为整数。我不知道如何通过VBA调用常规的excel功能,但是如果您尝试TEXTRangeA3、yyyy-mm-dd之类的方法,您会得到什么。您希望它生成一个SQL Server将接受为日期的字符串,我认为这可能与您的区域设置有关,但YY-mm-dd看起来与您的示例相匹配。关于调用工作表函数,如excel中的文本。