2017-05-16 126 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歡迎您,很高興知道它幫助。 –

相關問題