
VBA初心者です。
VBAで作成したプログラムがエラーで止まってしまい、先に進まないのです。
わかる方いらっしゃいましたら、ご教示頂けないでしょうか。
<やりたいこと>
同じ形式の複数のエクセルBOOKに入っている特定の列の特定の行範囲にあるデータを、
別の集計用エクセルBOOKの単一のシートの中に順々にコピーをしていきたいのです。
集計用BOOKの特定の行には、データBOOKのBOOK名が横にずらっと記載されて
おり、集計用BOOKに組んだVBAでBOOK名を読み取り、そのBOOK名のデータBOOKを
開き、特定セル範囲(A2:A5)の値をコピーし、集計用BOOKのBOOK名が記載されて
いる列に貼り付けしていく。同様に、集計用BOOKの右どなりの列に記載されている
BOOK名を読み取り、そのBOOKを開き...と継続し、集計用BOOKにデータ用BOOK
名が記載されていない列まできたら、Do Whileステートメントを終了する、ということ
をやりたいのです。
<問題点>
実行させると、「実行時エラー'1004' 'Range'メソッドは失敗しました
:'Global'オブジェクト」なるメッセージが出て、先に進まないのです。
<プログラム>
Sub W()
Dim ファイル名 As String
Dim 列番号 As String
列番号 = c
Do While Range(列番号 & "5").Value <> ""
ファイル名 = Range(列番号 & "5").Value
Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx"
Range("A2:A5").Copy
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.Paste Range(列番号 & "6")
列番号 = 列番号 + 1
Loop
End Sub
<エラー発生部分>
Do While Range(列番号 & "5").Value <> ""
<補足>
ちなみに、VBAの組んであるBOOKは「学校」フォルダの中、データが入っている
BOOKは「データ」フォルダの中に格納されています。
以上お手数をおかけしますが、よろしくお願いいたします。

No.1ベストアンサー
- 回答日時:
1回目のループ終了時の「列番号=列番号+1」結果は「D」になりますか?おそらくならないと思います。
エラー発生時にデバッグを押した後、列番号のところにカーソルを合わせると値表示がされるので、確認出来ます。これが原因ならば、以下のように対策すればOKです。
Sub W()
Dim ファイル名 As String
Dim 列番号 As Long
列番号 = 3
Do While Cells(5,列番号).Value <> ""
ファイル名 = Cells(5,列番号).Value
Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx"
Range("A2:A5").Copy
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.Paste Cells(6,列番号)
列番号 = 列番号 + 1
Loop
End Sub
要は列番号をアルファベットでなく整数に変更し、セル表現をRangeからCellsに変更します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
IIF関数の使い方
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
C# dataGridViewの値だけクリア
-
Cellsのかっこの中はどっちが行...
-
B列の最終行までA列をオート...
-
【VBA】条件に一致するステータ...
-
VBAで、特定の文字より後を削除...
-
VBAコンボボックスで選択した値...
-
エクセル 2つの表の並べ替え
-
VBAで10行おきにセルの下に罫線...
-
vba 数値がゼロになるまで引く
-
データグリッドビューの一番最...
-
【Excel VBA】 B列に特定の文字...
-
VBA 何かしら文字が入っていたら
-
Excelマクロ 複数条件一致デー...
-
VBAの構文 3列置きにコピーし...
-
【Excel VBA】カンマと改行コー...
-
オートフィルタをマクロで作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
【VBA】2つのシートの値を比較...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
URLのリンク切れをマクロを使っ...
-
エクセル 2つの表の並べ替え
-
VBAコンボボックスで選択した値...
-
VBAを使って検索したセルをコピ...
-
VBAでのリスト不一致抽出について
-
複数csvを横に追加していくマク...
-
C# dataGridViewの値だけクリア
-
データグリッドビューの一番最...
おすすめ情報