2013-11-20 206 views
0

與VBA相當新,似乎沒有太多的互聯網上的幫助,因爲我明白它是相對舊的。VBA和Excel宏

我想使用宏將數據從Excel表提交到SQL服務器數據庫。

基本上單擊一個按鈕,應該從單元格中提取所需數據,然後將數據放入我的數據庫中的正確列中。

它沒有提交數據properley,例如一個單元格中有數字「2」,它將數字「0」提交到我的數據庫中。

任何人都可以建議嗎?下面

代碼。

' Create the connection string. 
sConnString = "provider=xxx; Data Source=xx-xxx; Initial Catalog=xxx;User ID= xx; Password=xxx;": MsgBox "Connection Succesful" 



' Create the Connection and Recordset objects. 
Set conn = New ADODB.Connection 
Set rs = New ADODB.Recordset 
Dim val As String 
val = Range("D5").Value 

' Open the connection and execute. 
conn.Open sConnString 

Dim item As String 
item = "INSERT INTO [Industrial].[dbo].[Header](" 
item = item & " [server_name]" 
item = item & " ,[date]" 
item = item & " ,[amendee]" 
item = item & " ,[ip_address]" 
item = item & " ,[physical_location]" 
item = item & " ,[host_name]" 
item = item & " ,[is_it_contact]" 
item = item & " ,[businesscontact]" 
item = item & " ,[businessdependencies]" 
item = item & " ,[backup_strategy_in_place]" 
item = item & " ,[physorvirt]" 

item = item & " )Values(" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 
item = item & " '" & val & "'" 

conn.Execute item  

末次

+0

看起來像是在D5中找到相同的值,並將其設置爲數據庫記錄每列的值。是您想要的嗎? – Jaycal

+0

只是試圖將'D5'單元格值添加到屬於[header]表中的[ip_address]列中。 – user3013325

回答

0

你可能要檢查的數據類型和約束你的數據庫表。它可能取決於你的數據庫類型(MySQL,MSSQL或Postgres),如果你試圖在布爾列中輸入true而不是true,它將默認爲0.

其次,我注意到是你將相同的值放在每一列中。

我可以建議一個數組。 (簡介練成VBA陣列:http://excelvbatutor.com/vba_chp21.htm

下面的代碼將工作假設你的數據是Sheet 1上和像這樣... AB(列) 2 column_name_B 「50」 3 column_name_C 10 4 column_name_D MYNAME (行) 子testeroo()

Dim myArray(2, 2) 
Dim x As Integer 

Sheets("Sheet1").Activate 
For x = 2 To 4 
    myArray(x - 2, 0) = Cells(x, 1).Value 'gets the title 
    myArray(x - 2, 1) = Cells(x, 2).Value 'gets the value 
Next x 

那麼你可以做一個遍歷數組,讓您的SQL語句。 End Sub

+0

雖然你的答案很好!我設法讓它工作了一整晚。 – user3013325

+0

創建Connection和Recordset對象。 設置參數conn =新ADODB.Connection 集RS =新ADODB.Recordset 昏暗VAL作爲字符串 VAL =範圍( 「B5」)。值 '打開連接並執行。 conn.Open sConnString 昏暗項作爲字符串 項= 「INSERT INTO [IndustrialComp] [DBO]。[頁眉](」 項=項& 「[服務器]」 項=項&「)值(「 item = item&」'「&val&」')「 conn.Execute item – user3013325