- 帖子
- 552
- 主題
- 3
- 精華
- 0
- 積分
- 578
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office 2010
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2015-2-8
- 最後登錄
- 2024-7-9
  
|
5#
發表於 2016-9-6 16:37
| 只看該作者
回復 3# Changbanana
儲存格中沒有資料,在VBA陣列中並不會以為是Null值
而SQL語言中則是必須給他Null值
所以在arr中有空白處,必須把它改成"Null"
所以要多個迴圈去更改他的空值
INSERT INTO是新增資料,若修改表格中的資料就需要用到UPDATE 指令
有關SQL語法,請自行Google "SQL"- Public Sub 匯出()
- Dim arr, i%
- Dim myCon As Object, myRs As Object, sql$
- Set myCon = CreateObject("ADODB.Connection")
- Set myRs = CreateObject("ADODB.Recordset")
- myCon.Open "provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & ThisWorkbook.Path & "\test.accdb;"
- arr = Sheets(1).Range("C1", Sheets(1).[A65535].End(xlUp))
- For i = 1 To UBound(arr)
- For j = 1 To UBound(arr, 2)
- aa = arr(i, j)
- If arr(i, j) = Empty Then
- arr(i, j) = "Null"
- End If
- Next
- Next
- Set myRs = Nothing
- For i = 1 To UBound(arr)
- sql = "SELECT * FROM 資料表1 WHERE 資料表1.名稱 Like '" & arr(i, 1) & "';"
- Set myRs = myCon.Execute(sql)
- If myRs.EOF = True Then
- sql = "INSERT INTO " & "資料表1" & "(名稱,ID,成績)" & _
- " VALUES('" & arr(i, 1) & "','" & arr(i, 2) & "'," & arr(i, 3) & ");"
- Set myRs = myCon.Execute(sql)
- End If
- Set myRs = Nothing
- Next
- Set myRs = Nothing
- myCon.Close
- Set myCon = Nothing
- End Sub
複製代碼 |
|