【发布时间】:2017-09-01 20:24:00
【问题描述】:
我认为这有一个简单的答案,但我试图用谷歌搜索答案让自己发疯了。 我有一个 Excel 工具,它通过 VBA 从 Access 数据库下载数据。到目前为止,除了我尝试更新数据时,所有这些都运行良好。
我认为问题在于我正在通过 QueryTable 导入数据。我似乎无法获得更简单的代码来运行以下代码:
- 创建与 Access 数据库表的连接
- 删除表格中的所有项目
- 对同一个表运行“INSERT INTO”查询
这是我的代码:
Set obj = ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & cPath & ";Mode=ReadWrite"), Destination:=Range("W6")).QueryTable
With obj
.CommandType = xlCmdSql
.CommandText = Array(cRng.Offset(3, 0).Value)
.PreserveFormatting = True
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SaveData = True
.PreserveColumnInfo = True
.SourceDataFile = cPath
.ListObject.DisplayName = cName
.Refresh BackgroundQuery:=False
End With
在哪里,
cPath = 访问数据库路径
cRng = 带有 SELECT 查询的 Excel 单元格(这很好用)
cName = 表/对象的名称
然后我运行两个“with obj”以使用 DELETE 和 INSERT INTO 查询更新 .CommandText,但这就是 Excel 说它无法运行查询的地方。
有什么想法吗?我知道答案很简单。
谢谢!
【问题讨论】:
-
请在您的问题中包含完整的查询文本。此外,确保您的 Excel 文件在单元格中没有任何非 ascii 字符(Excel 倾向于添加一个字符来右对齐,一个简单的检查是将其复制并粘贴到即时窗口中,并检查意外的问号)。
-
它们是非常简单的查询:“SELECT * from tbl_Date”、“DELETE * from tbl_Date”和“INSERT INTO tbl_Date VALUES ('7/7/2017')”