簡體   English   中英

將命名表從 Excel 導出到 Access

[英]Export Named Table from Excel to Access


好的。 很抱歉浪費了大家的時間。 就像一個 DUMMY 一樣,我首先沒有想到簡單的解決方案。 我正在處理的數據量並不太大,實際上只要導出到 excel 文件(我很確定),效果會更好。 我要感謝所有幫助過的人(June7、Parfait 和 HansUp)。 到目前為止,你們(這個論壇上的每個人)給予的支持讓我的工作變得更輕松了。


我正在嘗試將 Excel 表從我的活動 excel 文件導出到 Access 數據庫文件。 我在

“con.execute sql”

“運行時錯誤 '-2147467259 (80004005)':[Microsoft][ODBC Microsoft Access Driver] 查詢輸入必須至少包含一個表或查詢。”

Sub updateAccess()

Dim con As New ADODB.Connection
Dim connectionString As String

Dim sql, newTable As String
Filename = "C:\Desktop\Quote-Size_Contacts.accdb"
connectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" & Filename

con.Open connectionString

' Save current table ("ContactsTbl_Data") to another table ("ContactsTbl_Data_yyyymmdd_hh_mmss")
newTable = "Quote-Size_Contacts_" & Format(Date, "yyyymmdd") & "_" & Format(Now, "hhmmss")
sql = "SELECT CODE, STORE INTO " & newTable & "FROM ContactsTbl_Data"
con.Execute sql

' Delete rows of current table ("ContactsTbl_Data")
sql = "DELETE FROM ContactsTbl_Data"
con.Execute sql

' Insert new rows into current table ("ContactsTbl_Data") from my Excel Sheet
sql = "INSERT INTO ContactsTbl_Data ([CODE], [STORE]) " & _
      "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & ThisWorkbook.FullName & "].[" & ThisWorkbook.Sheets("Sheet2").Name & "$]"
con.Execute sql

con.Close
Set con = Nothing

End Sub

編輯:: 我不確定這些論壇關於清理代碼和提出更多問題的標准協議,所以我將在這里放置一個“編輯”。 我應用了這些建議並將它試圖保存到我的訪問文件的字段匹配。 我現在收到錯誤消息:“object '_Connection' 的方法 'Execute' 失敗”

Public Sub updateAccess()

Dim con As New ADODB.Connection
Dim connectionString As String

Dim sql, newTable As String
Filename = "C:\Desktop\Quote-Size_Contacts.accdb"
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='" & Filename & "'"

con.Open connectionString

' Save current table ("ContactsTbl_Data") to another table ("ContactsTbl_Data_yyyymmdd_hh_mmss")
newTable = "Quote-Size_Contacts_" & Format(Date, "yyyymmdd") & "_" & Format(Now, "hhmmss")
sql = "SELECT Company, Contact, Initials, Position, Address, AddressContd, CityStatePost, MainNo, CellNo, FaxNo, Email INTO [" & newTable & "] FROM ContactsTbl_Data"
con.Execute sql

' Delete rows of current table ("ContactsTbl_Data")
sql = "DELETE FROM ContactsTbl_Data"
con.Execute sql

' Insert new rows into current table ("ContactsTbl_Data") from my Excel Sheet
sql = "INSERT INTO ContactsTbl_Data ([Company], [Contact], [Initials], [Position], [Address], [AddressContd], [CityStatePost], [MainNo], [CellNo], [FaxNo], [Email]) " & _
      "SELECT * FROM [Excel 12.0 Xml;HDR=Yes;Database=" & ThisWorkbook.FullName & "].[" & ThisWorkbook.Sheets("Sheet2").Name & "$]"
con.Execute sql

con.Close
Set con = Nothing

End Sub

看看這是否有幫助。

表名包含連字符 (-) 字符,因此使用 [ ] 字符進行分隔。 在 FROM 前面添加一個空格,這樣文本就不會在編譯的 SQL 字符串中一起運行。

sql = "SELECT CODE, STORE INTO [" & newTable & "] FROM ContactsTbl_Data"

至於連接Access數據庫,別以為我沒用過,也沒見過Driver,我用的是Provider:
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='" & Filename & "'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM