この内容で、バージョンは関係がありません。初歩的ですが、慣れないと出来ません。
文章は、もう少し見やすく書いてくださいね。それは、プログラミングのコーディングと同じことになりますから。
>Range(Cells(1, 1), Cells(100,100)).Copy Workbooks(2).Worksheets(2).Cells(1, 1)
RangeとCellsの親オブジェクトは繋がりがありませんから、必ず、一致させてください。それは基本です。
Workbooks(2)の意味というのは、分かりますか?Workbooks(1), Workbooks(2)の中の数字は、「開いた順」ですから、そのようなあやふやなコードは使えません。また、Worksheets(2)ま「2」は、左から数えて、2番目という意味です。ユーザー任意で順番を変えられたら、Index は使えません。
「インデックスが有効範囲にありません」というのは、主に、ファイル名が違っていたり、シート名が違った時に置きます。
基本的な書き方で、進めてみたらどうでしょうか。
以下では、拡張子は関係がありません。
'//標準モジュール
Sub OpenAndBackUp()
Dim FileNames As Variant
Dim f As Variant
Dim Tbk1 As Workbook
Set Tbk1 = ThisWorkbook
FileNames = "abc.xls,abb.xls,acb.xls" 'ブック名のリスト
FileNames = Split(FileNames, ",")
On Error GoTo ErrHandler
Application.EnableEvents = False 'イベントは切ったほうが良い
For Each f In FileNames
If Dir(f) <> "" Then
With Workbooks.Open(f)
Tbk1.Worksheets("Sheet1").Range("A1:CV100").Copy .Worksheets("Sheet2").Range("A1")
.Close True
End With
Else
MsgBox f & "のファイルはありません。"
End If
'エラーの時に知らせる(この設定では、エラーファイルは、開いたままになる可能性はある)
errJump:
Next
Application.EnableEvents = True
Exit Sub
ErrHandler:
MsgBox Err.Number & " :" & Err.Description & vbCrLf & f
GoTo errJump
End Sub
Workbooks("バックアップ").・・・
では無く
Workbooks("バックアップ.xls").・・・
と拡張子も含めてみれば
最初から必要なファイルを開いてからマクロを実行するのか
マクロからファイルを開いてマクロを実行するのかは分りませんが
どちらにしても、変数を使用して開いたファイルからファイル名或いは
ファイルインデクスを取得すればよいと思いますが
'一例です**************************************
dim bakupfail as string
dim tmpworkbook as workbook
for eact tmpworkbook in workbooks
if instr(tmpworkbook.name,"バックアップ")>0 then
bakupfail=tmpworkbook.name
exit sub
endif
next
Range(Cells(1, 1), Cells(100,100)).Copy Workbooks(bakupfail).Worksheets(2).Cells(1, 1)
'************************************************
この様に、現在開いているブックに"バックアップ"が含まれている
ブックのブック名を変数bakupfailに代入し、目的のコードのファイル名に
設定すればよいと思いますよ
この処理をブックopen時にpublicで宣言した変数へ設定して使用すれば
質問のエラーで悩むことがなくなると思いますよ
参考まで
補足
現時点で、三方から大変丁寧な回答をいただき、助かっています。 質問がわかりづらくてスミマセン。 回答も、初心者なもので、誤解もあるかもしれませんが、ファイル名の指定の際に 拡張子が必要なパソコンとそうでないパソコンがあることが、バグがでる、でないの原因に なっているのではないかと思います。今日、夜勤でこれから出勤するので、もういちど 拡張子の点で注意してコードを書き直してチャレンジしてみたいと思います。 結果はまた明日。