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

时间:2011-12-08 14:43:25

标签: sql sql-server excel vba

  

可能重复:
  Excel VBA INSERT INTO statement using variables

我刚开始学习一点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)"

IE,我只希望插入第4行的值。

2 个答案:

答案 0 :(得分:0)

可能你必须更加增量地构建字符串,如:

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

您显示的语法看起来会尝试将字符串“Range(A4).Value”插入数据库。

答案 1 :(得分:0)

将文件另存为逗号分隔的CSV文件,然后您可以使用批量插入,如下所示。 声明@sql varchar(max) 设置@sql =“BULK INSERT TAB_UY420 FROM'”+ @ File +“'WITH(FIELDTERMINATOR =',')” exec(@sql)