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

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

hige_082の回答

  • 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

  • エクセルVBA ファイル名操作

    エクセルマクロのコードにおきまして 「フォルダの選択」ダイアログから エクセルファイル 123.xlsxを例えば 開くときに それをa.xlsxという名前に変えて 以下のそれに続くVBAコードにおいて a.xlsxを操作したいのですが、 a = Application.GetOpenFilename() Workbooks.Open a これを実行すると求めるダイアログが表示されて 使いたい123.xlsxを開くをクリックしますが これでは123.xlsxがa.xlsxにはなりません このa.xlsxのファイル名で別途ファイル作成する方法を 御教示いただけると助かります よろしくお願いします win10 office365 コードは以下 部分ですが こういう流れで作成したい所存です Sub あいう() a = Application.GetOpenFilename() Workbooks.Open a 'b.xlsxファイルを新規作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="C:\Users\USER\Desktop\あいう\b.xlsx", FileFormat:=xlXMLSpreadsheet 'a.xlsxファイルの1行目のA1~AG1のセルの値をコピー Workbooks("a.xlsx").Worksheets("Sheet1").Range("A1:AG1").Copy 'b.xlsxファイルのA3~AG3のセルに貼り付け Workbooks("b.xlsx").Worksheets("Sheet1").Range("A3:AG3").PasteSpecial xlPasteValues 以下省略 よろしくお願いします

  • VBA マクロ実行時エラー 1004

    すみません (1)Workbooks(p_addr_Name).Worksheets(sheet_check).Range(Cells(7, 2), Cells(19, 2)).Copy (2)Workbooks(p_SH_weekly).Worksheets("Sheet1").Range(Cells(7, i), Cells(19, i)).PasteSpecial Paste:=xlPasteAll その際(2)で「実行時エラー'1004'」が出ました、教えてください。 *上記引数は全部入りました 宜しくお願いします

  • Excel マクロ 別のファイルの情報をコピーして貼り付ける

    Excel 2007のマクロで、別のファイルの情報をコピーして貼り付ける マクロを作成しています。 別ファイルが1つであれば下記のマクロでできました。 他に別ファイルがもう1つあり、全部で2つのファイルからそれぞれ 必要なシートから情報をコピーしたいと思います。 ※各シート名は異なります。 別ファイルが2つになった場合、マクロをどのように記載すればよろしいでしょうか。 よろしくお願いいたします。 Sub Test1() Dim myCellall As Range Set myCellall = Sheets("すべて").Range("A1") With Workbooks.Open("\") With .Worksheets("すべて") .Range(.Range("A1"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall End With .Close False End With End Sub

  • VBAについてです。

    VBAについてです。 当方VBA初心者です。初歩的な質問があり投稿しました。 Workbooks("aaaa.xlsx").Worksheets("aaa").Range("A3:A50").Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") というコピーはできるのに Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(50, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") というコピーはどうしてできないのでしょうか? また、最下行を判別して Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(最下行, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") という様に簡単に処理したいのですが、やはり無理なのでしょうか? ブックが違うのですが、これをなんとかこのような処理にしたいと思っています。

  • Excel VBAでのExcelのヴァージョン違いで、デバッグがかかる?

    Excel2000では、デバッグがかからず実行出来るのですが、Excel2002・2003ではデバッグがかかってしまいます。 症状は Excel2002では 「実行時エラー’9’  インデックスが有効範囲にありません」 Sheets("KNS").Copy After:=Workbooks("施工請求SAM").Sheets(Sheets.Count) Excel2003では 「実行時エラー’1004’  RangeクラスのCopyメソッドが失敗しました」 .Range("A3").CurrentRegion.Copy Destination:=WS2.Range("C2") とデバッグがかかってしまいます!! ヴァージョンがアップしているのに・・・??状態です。 何か、不必要コマンドを入力しまっているのでしょうか?

  • EXCEL VBA セルからファイル名を読み込む

    EXCEL VBAについての質問です 同じ処理を名前の違う複数のファイルで行いたいと思っています そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。 良い方法を教えてください。 Workbooks("200809.csv").Activate Sheets("200809").Select Range("C3:C33").Copy Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい Sheets("報告書").Select Range("G5:G35").Select ActiveSheet.Paste Windows("200809.csv").Activate Range("K3:K33").Copy Windows("○○.xls").Activate’←ここ Sheets("報告書").Select Range("I5:I35").Select ActiveSheet.Paste Workbooks("200809.csv").Close SaveChanges:=False よろしくお願いします。

  • Excel2007 コピペエラー

    以下を実行すると、「そのコマンドは複数の選択範囲に対して実行できません」エラーがでます。 Workbooks("Test1").Sheets("Sheet1").Range((.Cells(1, 1), .Cells(100, 20)).Copy Workbooks("Test2").Sheets("Sheet2").Activate Workbooks("Test2").Sheets("Sheet2").Cells(1, 1).Select ActiveSheet.Paste どなたか原因を教えて下さい。

  • VBA VLOOKUPとセルのコピーができません

    助けてください マクロでVLOOKUPを使い、データを持ってこようとしてますが上手くいきません やりたいこと:Sheet3(在庫を貼付)にある4列目の数値を、Sheet1のG列で照合し、Sheet1の9列目に持ってきたい Sheet1:cells(6,9)にVLOOKUPの式を入れる 関数で言えば=VLOOKUP($G,Sheet3!C:F,4,FALSE) cells(6,9)をcells(7,9)からcells(2000,9)までコピー これを実行すると 「アプリケーション定義またはオブジェクト定義のエラーです。」 とでて止まってしまいます ActivesheetsやWorkbooks、WorksheetsやSheetsで設定したりしてもエラーは変わりますが 止まってることには変わりありません どうしたら動くようになりますか? Sub vlook() Dim Nname As String macx = "ルーチンワーク20130223.xlsm" 'マクロ用ファイル「ルーチンワーク20130223.xlsm」がある Sheets(1).Select Workbooks(macx).Activate Worksheets(1).Activate ddir = Cells(33, 2) 'cells(33,2)にフォルダ情報がある Nname = Dir(ddir & "在庫推移.xlsx") '在庫推移.xlsxというVLOOKUPしたいファイルがある Workbooks.Open Filename:=ddir & Nname Workbooks(Nname).Activate Sheets(1).Select Worksheets(1).Activate 'VLOOKUPで在庫を持ってくる ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'在庫を貼付'!C[-6]:C[-3],4,FALSE)"   '自動記録マクロから持ってきてます Worksheets(1).Activate Sheets(1).Select Range(Cells(6, 9)).Copy Destination:=Sheets(1).Range(Cells(7, 9)) 'この行でエラーが出る

  • 異なるブック間でのセル範囲のコピー/VBA

    異なるブック間でクリップボードを経由せず直接コピーしたいため 下記のマクロを記述していますが、実行エラーが発生します。 どうしてでしょうか。 ThisWorkbook.Worksheets(3).Range(Cells(3, 1), Cells(3 + a, 1)).Value = Workbooks("excel.xls").Worksheets(1).Range(Cells(11, 3), Cells(11 + a, 3)).Value (補足) (1)VBA実行中のThisWorkbook、excel.xlsは別のブック ですが、同じフォルダにあります。 (2)aは数値が入る変数です。

  • エクセルマクロ ファイル名を変更したとき

    マクロ初心者です。 データファイルからシートを複写挿入するマクロです。 コピー先ファイル名を都度変更したいのですが、その場合マクロにコピー先ファイル名が入っているのでエラーになります。名前が変わっても実行できるようにするにはどうしたらよいのでしょう? なお、複写元のデータファイルは複写後に閉じます。 Workbooks.Open Filename:="データファイル.xls" Sheets("Sheet1").Copy Before:=Workbooks("コピー先ファイル名.xls").Sheets(1)