• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのバージョンの違いからか?ファイル操作で正常に起動するときとエ)

エクセルのバージョンの違いからか?ファイル操作で正常に起動するときとエラーのときが・・・・

このQ&Aのポイント
  • エクセルのバージョンの違いにより、ファイル操作で正常に起動する場合とエラーが発生する場合があります。
  • マクロを実行する際、パソコンの違いによって、「インデックスが有効範囲にありません」というエラーメッセージが表示されることがあります。
  • エラーの原因は、特定のファイル名の指定方法によるものであり、通し番号でマクロを組むことで回避できますが、複数のファイルを操作する場合はファイル名を明記する必要があるため注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#3の回答者ですが、 >拡張子が必要なパソコンとそうでないパソコンがあることが、バグがでる、でないの原因に なっているのではないかと思います。 VBAでは、明示的に、拡張子まで入れなくてはいけません。私のマクロは、拡張子は入れないと動かないです。拡張子がないと、ファイルがありません、と出てきます。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

この内容で、バージョンは関係がありません。初歩的ですが、慣れないと出来ません。 文章は、もう少し見やすく書いてくださいね。それは、プログラミングのコーディングと同じことになりますから。 >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

andesandes
質問者

補足

現時点で、三方から大変丁寧な回答をいただき、助かっています。 質問がわかりづらくてスミマセン。 回答も、初心者なもので、誤解もあるかもしれませんが、ファイル名の指定の際に 拡張子が必要なパソコンとそうでないパソコンがあることが、バグがでる、でないの原因に なっているのではないかと思います。今日、夜勤でこれから出勤するので、もういちど 拡張子の点で注意してコードを書き直してチャレンジしてみたいと思います。 結果はまた明日。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

質問を長々書いているが判りにくい。 >Range(Cells(1, 1), Cells(100,100)).Copy のRange(●Cells(1, 1), ●Cells(100,100)).Copyの●の部分にシートを特定するシート名かインデックス番号でしてしないと良くエラーを経験する。 この点は経験していますか。 参考 Googleで「アプリケーションの定義またはオブジェクト定義のエラーです range」で照会。 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200705/07050186.txt の「MRM」さんの項 Sub test01() Dim sh1 Worksheets("Sheet1").Range(Cells(1, 1), Cells(100, 100)).Copy Set sh1 = Worksheets("Sheet1") sh1.Range(sh1.Cells(1, 1), sh1.Cells(100, 100)).Copy Sheets("Sheet2").Activate ActiveSheet.Paste End Sub でも3行目でエラー。 ここをコメント化するとOK

andesandes
質問者

補足

現時点で、三方から大変丁寧な回答をいただき、助かっています。 質問がわかりづらくてスミマセン。 回答も、初心者なもので、誤解もあるかもしれませんが、ファイル名の指定の際に 拡張子が必要なパソコンとそうでないパソコンがあることが、バグがでる、でないの原因に なっているのではないかと思います。今日、夜勤でこれから出勤するので、もういちど 拡張子の点で注意してコードを書き直してチャレンジしてみたいと思います。 結果はまた明日。

すると、全ての回答が全文表示されます。
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

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で宣言した変数へ設定して使用すれば 質問のエラーで悩むことがなくなると思いますよ 参考まで

andesandes
質問者

補足

現時点で、三方から大変丁寧な回答をいただき、助かっています。 質問がわかりづらくてスミマセン。 回答も、初心者なもので、誤解もあるかもしれませんが、ファイル名の指定の際に 拡張子が必要なパソコンとそうでないパソコンがあることが、バグがでる、でないの原因に なっているのではないかと思います。今日、夜勤でこれから出勤するので、もういちど 拡張子の点で注意してコードを書き直してチャレンジしてみたいと思います。 結果はまた明日。

すると、全ての回答が全文表示されます。

関連するQ&A