我有这个非常奇怪的问题。
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"
我不知道还有什么要说的......这与我遇到的任何事情不同。对于能够在读写中完美工作并且不是只读的东西来说,这很奇怪。
感谢您的帮助。
答案 0 :(得分:0)
我已经弄清楚了。如果工作簿是只读的(这是有意义的),则此代码使用工作簿的原始状态。
conn.Execute "INSERT INTO tbl " & _
"SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & ThisWorkbook.FullName & "].[temp$]"
由于我以只读方式使用工作簿并制作新工作表来放入我的临时数据,因此Execute加载的原始状态不包含新工作表,因为它没有保存
创建一个新的临时工作簿并保存它,参考这个新文件,进行插入并在之后删除它似乎是最好的解决方案。