
VBAでエクセルファイルを複数、順番に開くマクロを作ったのですがファイルが1つだけ開いてエラーになり2つ目以降のファイルが開きません。開きたいファイル名は別のエクセルシートに順に記入したおります。以下マクロどこがおかしいでしょうか?
Dim GYO As Long
Dim FILE As String
For GYO = 2 To Cells(Rows.Count, 1).End(xlUp).Row
FILE = Cells(GYO, 1)
Workbooks.Open FILENAME:="C:\Users\mm02793\Desktop\TEST SM5231\" & FILE & ".xlsx"
Next
No.2ベストアンサー
- 回答日時:
No1です。
>Workbook.Worksheet.Cells(GYO, 1)のところでエラーになります。
え~~っと。
No1で示したのは「Workbook.Worksheet.Cells(GYO, 1)のような形式で」ということで、ワークブックオブジェクト、シートオブジェクト、セル(レンジオブジェクト)をドット記法で連結して指定する「形式」を意味したつもりですので、そのままを記しても機械には理解できません。
それなので、「意味がわからん」と叱られます。
(人間には通じるつもりで書いていたのですが…)
オブジェクトを指定する方法にはいろいろありますが、例えばブックで代表的なのは
(1)Workbooks("ブック名") ---開いている(複数の)ブックから指定
(2)ThisWorkbook ---実行しているマクロが記載されているブック
(3)ActiveWorkbook --- アクティブなブック
などがありますが、(3)はNo1に記しましたようにご提示のような処理では利用できません。
シートに関しても同様に
(1)Worksheets("シート名") ---指定されたブック内のシート名で指定
(2)Worksheets(番号) ---指定されたブック内のシート番号で指定
(3)ActiveSheet --- アクティブなシート
などがあります。
(使用頻度が高い場合は、オブジェクトを、一旦、変数に代入しておいて、
wb.sht.Cells(rw, clm).Value
のような指定をすることも可能です。)
質問者様の実行なさっている環境がどのようになっているのかがわかりませんが、ひとまず
Workbooks("ブック名").Worksheets("シート名").Cells(GYO, 1)
という記法で、それぞれ「ブック名」、「シート名」のところを、実際の正しいブック名、シート名に置き換えて指定してみてください。
※ なお、ご提示のコードに関する限りでは多分大丈夫だと思いますが、
>For GYO = 2 To Cells(Rows.Count, 1).End(xlUp).Row
のようなセル指定に関しても、同様に、きちんとブック、シートを明示した指定にしておくほうが無難です。
No.1
- 回答日時:
こんにちは
ブックを開くとそのブックがアクティブになります。
そのため、
>FILE = Cells(GYO, 1)
で参照しているのは開いたブックの表示されているシートのセルになっていると想像されますので、次のファイルを開こうとした時のファイル名が予定と違うものになっているので、
「指定されたファイルが見つからない」というようなエラーになっているものと想像します。
対処法としては、上記のブック名を取得する際に、Workbook.Worksheet.Cells(GYO, 1) のような形式で、明示的に参照先を指定しておけばよろしいかと思います。
(複数のブックを扱う際に、気を付けた方が良い点のひとつです)
早速ご回答いただきありがとうございます。以下で正しいでしょうか?やはりFILE = Workbook.Worksheet.Cells(GYO, 1)のところでエラーになります。(すいません、VBAの勉強始めたばかりで・・・)
Sub Macro1()
Dim GYO As Long
Dim FILE As String
For GYO = 2 To Cells(Rows.Count, 1).End(xlUp).Row
FILE = Workbook.Worksheet.Cells(GYO, 1)
Workbooks.Open FILENAME:="C:\Users\mm02793\Desktop\TEST SM5231\" & FILE & ".xlsx"
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
同じフォルダへのハイパーリン...
-
別ブックから入力規則でリスト...
-
WorkBooksをオープンさせずにシ...
-
Excelファイルをダブルクリック...
-
エクセルファイルを開かずにpdf...
-
Excelで指定範囲のデータ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
エクセルでウィンドウの枠固定...
-
VBA バックグラウンドで別ブッ...
-
Excelで複数ブックの同一セルに...
-
「ブックの共有」を有効にして...
-
フォルダ内の複数ファイルから...
-
Excel(2010)のフィルターが保...
-
エクセルで別ブックをバックグ...
-
Excel VBA セルと同じ名前のブ...
-
Excelで拡張子の後に数字が……何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
Excelの新しい空白のブックを開...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
Excelファイルをダブルクリック...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelの警告について
-
Excelで複数ブックの同一セルに...
-
フォルダ内の複数ファイルから...
-
同じフォルダへのハイパーリン...
-
エクセルにおける,「ブック」...
-
別ブックから入力規則でリスト...
-
エクセルで別ブックをバックグ...
-
エクセルでウィンドウの枠固定...
-
エクセルファイルを開かずにpdf...
-
「ブックの共有」を有効にして...
おすすめ情報