プロが教えるわが家の防犯対策術!

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

A 回答 (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
のようなセル指定に関しても、同様に、きちんとブック、シートを明示した指定にしておくほうが無難です。
    • good
    • 0
この回答へのお礼

とてもよくわかりました。丁寧にご回答いただき本当にありがとうございました

お礼日時:2018/06/27 17:50

こんにちは



ブックを開くとそのブックがアクティブになります。
そのため、
>FILE = Cells(GYO, 1)
で参照しているのは開いたブックの表示されているシートのセルになっていると想像されますので、次のファイルを開こうとした時のファイル名が予定と違うものになっているので、
「指定されたファイルが見つからない」というようなエラーになっているものと想像します。

対処法としては、上記のブック名を取得する際に、Workbook.Worksheet.Cells(GYO, 1) のような形式で、明示的に参照先を指定しておけばよろしいかと思います。
(複数のブックを扱う際に、気を付けた方が良い点のひとつです)
    • good
    • 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

お礼日時:2018/06/27 16:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!