代码只读vs读写,结果不一样



我有一个很奇怪的问题。

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"

我不知道还能说什么…这是我从未遇到过的。有些东西在读写状态下工作得很好,而不是只读状态,这真是太奇怪了。

我明白了。如果工作簿为只读(这是有意义的),则此代码使用工作簿的原始状态。

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

由于我在只读状态下使用工作簿并制作一个新的工作表来放置我的临时数据,Execute加载的原始状态不包含新工作表,因为它没有保存。

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

最新更新