打开外部工作簿

打开外部工作簿

问题描述:

我对我的VBA Excel程序没有问题。我试图用Application.Workbooks.Open()函数打开外部工作簿。外部工作簿的文件名来自CommonDialog。当我用对话框选择文件并让程序加载工作簿时,由于某种原因,Excel首先加载该文件的某种副本,然后加载了我想要的文件。这导致Excel开始抱怨没有足够资源的问题。我试图用简单的字符串来给外部工作簿的文件名,并且以这种方式使用它时,Excel只加载我希望它加载的文件。打开外部工作簿

下面是代码:

CommonDialog1.Filter = "Excel-taulukot (*.xlsx)|*.xlsx" 
CommonDialog1.ShowOpen 
Dim externalWorkbook As Excel.Workbook 
'This one seems to load copy and the file' 
Set externalWorkbook = Application.Workbooks.Open(CommonDialog1.Filename, , True) 
'This one works, but I need it to be little less hardcoded' 
'Set externalWorkbook = Application.Workbooks.Open("<pathtofile>", , True)' 
Set externalSheet = externalWorkbook.Worksheets(1) 
+0

虽然这个建议不会影响你当前的问题,你不应该测试用户取消打开对话框吗? – 2012-02-29 16:48:26

+0

你说得对,我应该这样做,但它还没有实现到我的代码。 – WonderMike 2012-02-29 16:51:19

+0

如果你发布了所有的VBA代码,这将有所帮助。我没有看到externalSheet的定义。你能解释一些关于你为什么认为某种副本首先被加载的内容吗? – 2012-02-29 16:55:02

我已经解决了这个问题。出于某种原因,在对话屏幕上禁用预览窗口停止Excel以加载文件的副本。现在它正在按照我的想法工作。

+1

您是否可以显示您插入的代码来做到这一点,作为未来其他人的参考?很高兴你知道它 – datatoo 2012-03-01 14:23:16

+0

我没有添加任何代码,我只是从对话窗口禁用预览。顺便说一句,谢谢大家试图帮助我。 – WonderMike 2012-03-01 16:19:42

的XLSX格式是一种压缩格式,它可能是你所看到的是一个解压缩到加载临时文件。你确定何时对文件名进行硬编码时,当你在调试中逐步完成时,没有看到它做同样的事情?

+0

是的,我确信这一点。这不是用硬编码版本来做拷贝。以下是描述情况的图像:http://i43.tinypic.com/30j681k.jpg – WonderMike 2012-02-29 20:04:40

+0

您是否需要该文件才能打开只读?似乎“......的副本”可能与该情况有关。将对话框的只读​​部分设置为false,并查看它的行为是否有所不同。 – datatoo 2012-02-29 20:55:31

+0

什么是调用窗体加载对话框被调用? – datatoo 2012-02-29 21:18:14