2011-12-08 88 views
0

可能重複:
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行的值。

回答

0

也許你必須更逐步建立字符串,如:

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)。 –

0

將您的文件保存爲以逗號分隔的CSV文件,然後您可以使用批量插入,如下所示。 申報@sql VARCHAR(最大值) 集@sql = 「BULK INSERT TAB_UY420 FROM ' 」+ @文件+「' WITH(FIELDTERMINATOR = '')」

相關問題