插入Excel单元格的值到现有的SQL表

问题描述:

可能重复:
Excel VBA INSERT INTO statement using variables插入Excel单元格的值到现有的SQL表

我刚开始学习了一下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行的值。

也许你必须更逐步建立字符串,如:

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

告诉你长相ILKE它会尝试将字符串“范围(A4).value的”插入数据库的语法。

+0

我已经试过以下 EXEC(@sql): (+)','“+范围(”B3“)。 Value +“','”+ Range(“D3”)。Value +“','”+ Range(“E3”)。Value +“','”+ Range(“F3”)。 ''+ Range(“G3”)。Value +“')”' 但是得到一个: 类型不匹配的错误,这可能是由于我试图插入日期到数据库?... –

+0

是的,这似乎有可能。尝试只做一对夫妇的列作为测试,列只是普通的旧数字或字符串。 Excel将日期存储为整数。我不确定你如何通过VBA调用常规的Excel功能,但是如果你尝试使用TEXT(范围(A3),“yyyy-mm-dd”),那么看看你会得到什么。您希望它创建一个SQL Server将接受为日期的字符串,并且我认为这可能与您的语言环境有关,但yyyy-mm-dd看起来与您的示例相匹配。 –

+0

[这里是链接](http://www.cpearson.com/excel/callingworksheetfunctionsinvba.aspx)关于从excel中调用工作表函数(如TEXT)。 –

将您的文件保存为以逗号分隔的CSV文件,然后您可以使用批量插入,如下所示。 申报@sql VARCHAR(最大值) 集@sql = “BULK INSERT TAB_UY420 FROM ' ”+ @文件+“' WITH(FIELDTERMINATOR = '')”