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连接,请使用&代替。