2017-05-16 98 views
1

我有一个在我的电脑上运行良好的宏,但没有出现在我以前从未见过的朋友的电脑中。VBA:将所有数据复制到另一个工作簿的工作表

这个错误来自这一部分:

... 
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,这种事情会发生吗?
- 有没有其他方法可以做到这一点?

预先感谢您。

+2

下标超出范围意味着您正尝试复制或复制到未定义的范围。要么在脚本中没有声明“主”工作簿,没有索引为2的工作表,它无法在名称中找到具有该特定日期的工作簿,或者未在该工作簿中找到索引为1的工作表。 例如:ActiveSheet.Range(“A0”),value =“something”也会产生这个错误。 –

+0

谢谢Rik。你的帮助是喜欢的。 – Francis

回答

1

只是一个猜测...你在文件夹选项设置中有不同的选项来查看文件名。

在您的PC上,选项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")... 
'          ^^^^^^^ 

由于一个解决方案,把文件的扩展名在两种情况下工作

p.s.顺便说一下,不要使用+作为字符串连接,而应该使用&

+1

谢谢ASH!这正是问题所在。 – Francis

+0

@Francis欢迎您,很高兴知道它帮助。 –

相关问题