VBA:将所有数据复制到其他工作簿的工作表
我有一个在我的电脑上运行良好的macros,但没有在我以前从未见过的朋友的电脑中。
错误来自于这个部分:
... Workbooks("GOP_Flow_" + Format(DateAdd("m", -1, Date), "yyyy") + Format(DateAdd("m", -1, Date), "mm")).Worksheets(1).UsedRange.Copy main.Worksheets(2).Range("A1").PasteSpecial (xlPasteValues) ...
运行时错误9:复制行上的“下标超出范围”。
– 由于我们使用相同版本的Excel,这种事情怎么会发生呢?
– 有没有其他的方法来做到这一点?
先谢谢你。
只是一个猜测…你在文件夹选项设置中有不同的选项来查看文件名。
在您的电脑上,选中“ Hide extensions for know file types
”选项,所以文件的扩展名在文件名中不可见。 因此, Workbooks("GOP_Flow_201704)
适用于不带文件扩展名的文件。
在你朋友的电脑上,这个选项没有被选中,所以扩展名成为工作簿的一部分,比如"GOP_Flow_201704.xlsx"
,所以你需要把扩展名添加到名字中。
Workbooks("GOP_Flow_" & _ Format(DateAdd("m", -1, Date), "yyyy") & _ Format(DateAdd("m", -1, Date), "mm") & ".xlsx")... ' ^^^^^^^
作为一种解决scheme, 在这两种情况下 ,将文件的扩展名作为名字是有效的 。
ps顺便说一下,不要使用+
作为string连接,请使用&
代替。