【发布时间】:2020-06-09 20:33:45
【问题描述】:
好的。很抱歉浪费了大家的时间。就像一个 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
编辑:: 我不确定这些论坛关于清理代码和提出更多问题的标准协议,所以我将在这里添加“编辑”。 我应用了这些建议并将它试图保存到我的访问文件的字段匹配。我现在收到错误:“对象'_Connection'的方法'执行'失败”
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
【问题讨论】:
-
我尝试了另一个代码,它实际上打开了数据库文件,就像它会做某事一样,但后来我收到错误:“找不到可安装的 ISAM。”
-
您的 Excel 文件是
.xls还是.xlsx格式? -
它是 .xlsm 格式
-
然后使用:
[Excel 12.0 Xml;HDR=Yes;Database=... -
我从一个 xlsm 文件中测试了 8.0 代码,并且 SQL 成功执行,但随后我的计算机崩溃了。
标签: excel vba ms-access export