Code Read-Only vs Read-Write,结果不一样

时间:2015-07-10 16:33:39

标签: database excel vba ms-access-2007

我有这个非常奇怪的问题。

conn.Execute "INSERT INTO tbl " & _
             "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & ThisWorkbook.FullName & "].[temp$]"

当我在读写中运行此代码时,它可以工作。当我在文件是只读时运行它时,代码崩溃并给我这个错误:"外部表格不是预期的格式"。

我的连接字符串是(MS Access DB):

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";Jet OLEDB:Database Password=mypass;Persist Security Info=True"

我不知道还有什么要说的......这与我遇到的任何事情不同。对于能够在读写中完美工作并且不是只读的东西来说,这很奇怪。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。如果工作簿是只读的(这是有意义的),则此代码使用工作簿的原始状态。

conn.Execute "INSERT INTO tbl " & _
         "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & ThisWorkbook.FullName & "].[temp$]"

由于我以只读方式使用工作簿并制作新工作表来放入我的临时数据,因此Execute加载的原始状态不包含新工作表,因为它没有保存

创建一个新的临时工作簿并保存它,参考这个新文件,进行插入并在之后删除它似乎是最好的解决方案。

相关问题