標題:
[發問]
VBA 用SQL 一次新增多筆資料至EXCEL的方法
[打印本頁]
作者:
PKKO
時間:
2017-2-13 02:23
標題:
VBA 用SQL 一次新增多筆資料至EXCEL的方法
小弟會用VBA+SQL連線至MSSQL 並且一次新增多筆資料,用;連接insert字串即可
但不曉得要如何連線至EXCEL之後一次新增多筆資料?
方法一:無效
strSQL = "INSERT INTO " & Table_name & " VALUES (" & Columns_name & ")"
strSQL2=strSQL & ";" & strSQL
方法二:無效
strSQL = "INSERT INTO " & Table_name & " VALUES (" & Columns_name & "),(" & Columns_name & ");"
求大大們協助 = =
作者:
lpk187
時間:
2017-2-17 23:56
回復
1#
PKKO
剛好有看過一篇,但未曾實踐過,你可以試試
https://support.microsoft.com/en ... nto-microsoft-excel
作者:
PKKO
時間:
2017-2-18 10:38
回復
2#
lpk187
可惜此篇尚未提到,感謝您!
作者:
michael101772
時間:
2017-2-18 13:07
不太懂你的意思,你是要從Excel撈sql裡面的資料嗎?
這個用select就可以了。
作者:
baomin
時間:
2017-2-18 13:40
回復
1#
PKKO
你好
strSQL = "UPDATE PURTD1008 set TD012='" & Range("E" & I) & "' where TD001='" & Range("A" & I) & "' and TD002='" & Range("B" & I) & "' and TD003='" & Range("C" & I) & "'"
用UPDATE,你再試試看
作者:
PKKO
時間:
2017-2-19 19:14
回復
5#
baomin
您好,update 是修改資料
小弟想要的是當你有一萬筆資料要輸入至EXCEL
但想要用SQL連線的方式做輸入
要如何一次輸入多筆資料
而並非每一筆資料執行一次
作者:
lpk187
時間:
2017-2-19 20:16
本帖最後由 lpk187 於 2017-2-19 20:20 編輯
用這個例子吧!1萬筆資料約3秒。這個insert into 的用法
匯入資料,不一定得用SQL語句
Public Sub ex()
sql = "SELECT * FROM TblStudent ;"
strSqlInstance = "伺服器名稱"
strSqlDB = "資料庫名稱"
strSqlUser = "sa"
strSqlPWD = "a123456"
sConnect = "Provider=SQLOLEDB"
sConnect = sConnect & ";Data Source=" & strSqlInstance & ";Initial Catalog=" & strSqlDB
sConnect = sConnect & ";User ID=" & strSqlUser & ";Password=" & strSqlPWD & ";"
Set myCon = CreateObject("ADODB.Connection")
myCon.Open sConnect
Set rng = Range("A2")
With New ADODB.Recordset
.Open sql, myCon, , adLockOptimistic
Do Until rng = ""
.AddNew
For i = 1 To .Fields.Count - 1
.Fields(i) = rng.Offset(, i - 1)
Next
Set rng = rng.Offset(1, 0)
Loop
.Update
End With
Set myRs = Nothing
myCon.Close
Set myCon = Nothing
End Sub
複製代碼
回復
6#
PKKO
作者:
PKKO
時間:
2017-2-20 00:06
回復
7#
lpk187
lpk大大您好,
首先非常感謝您,另外想請教一下:
您是否會用SQL連線至有設定開啟密碼的EXCEL檔案呢?
以下是我的語法(可連線至EXCEL檔案,可是一但EXCEL有設定開啟密碼就無法連線了,不知道要如何輸入開啟密碼
可否幫小弟看一下...
Public Conn As ADODB.Connection
'保存和更新基礎資訊
Public Sub Conn_conection()
address1="EXCEL檔案位置"
If Conn Is Nothing Then Set Conn = New ADODB.Connection
'以下建立數據庫連接
With Conn
strConn = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;" & _
"Data Source=" & address1 & ";Extended Properties='Excel 12.0;IMEX=0'"
.Open strConn
End With
End Sub
複製代碼
作者:
lpk187
時間:
2017-2-20 20:02
回復
8#
PKKO
在microsoft的文檔中有提到,在 [連線] 索引標籤上,瀏覽至活頁簿檔案。請忽略「使用者 ID」和「密碼」項目,因為它們不會套用至 Excel 連線 (您無法開啟具有密碼保護的 Excel 檔案做為資料來源。
https://support.microsoft.com/zh ... visual-basic-or-vba
所以只有無密碼保護的execl檔才能做為資料來源!
作者:
PKKO
時間:
2017-2-21 14:35
回復
9#
lpk187
lpk 大大非常感謝您
我想也是這樣,因為我已經嘗試將password 放到任何位置,都無法進行連線
但是Access卻輕鬆達成
再次感謝您的回覆!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)