複数のファイルから複数のシートのD9セルの数字を新しいブックにリストする方法

このQ&Aのポイント
  • エクセル2003を使用して複数のファイルから複数のシートのD9セルの数字を新しいブックにリストしたい場合、以下のマクロを使用することができます。
  • マクロでは、指定されたフォルダ内の全ファイルを順に開き、指定したシートのD9セルの値を取得し、新しいブックにリストします。
  • ただし、現在のマクロでは指定されたシートのD9セルの値しか取得できないため、複数シートに対応するためにはマクロを改良する必要があります。
回答を見る
  • ベストアンサー

複数のファイルの、複数のシートにあるD9セルの数字を、新しいブックにリ

複数のファイルの、複数のシートにあるD9セルの数字を、新しいブックにリストしたいのですが、上手くいかないようです。 以下、それらしきマクロのコピペです。 (使用ソフトはエクセル2003です) Sub sample() Dim folder As String Dim sh As Worksheet Dim file As String Dim r As Long folder = "C:\abc\M1501~M2140\" 'ファイルがあるフォルダ sh.Range("A1").Value = "ファイル名" '見出し sh.Range("B1").Value = "A1" '同上 r = 2 '結果出力行の初期値 file = Dir(folder & "*.xls") 'フォルダ内の最初の.xlsファイルを取得 Do While file <> "" 'ファイル名がある間 Workbooks.Open folder & file 'そのファイルを開く sh.Range("A" & r).Value = file '結果シートのA列にファイル名を sh.Range("B" & r).Value = ActiveWorkbook.Sheets("あいうえお").Range("D9") '結果シートのB列に開いたブックのあいうえおのD9の値 ActiveWorkbook.Close False '開いたブックを閉じる r = r + 1 '結果出力行+1 file = Dir '次のファイル名取得 Loop '繰り返す End Sub これですと、「あいうえお」のシートのD9しか結果表示されないようです(実際、これは複数ファイルからの抽出用です)。 この式に複数シート対応の式を加えれば出来そうな気がするのですが、ここからどうすればいいかわかりません; 上記の式を大幅変更でも構いませんので、教えて下さい。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

ここまできているのに。。。。 >sh.Range("B" & r).Value = _    ActiveWorkbook.Sheets("あいうえお").Range("D9") これは当然、「あいうえお」のシートのD9のセットですよね。 上記の行をブックのシート数分ループするように変更するだけです。 --- For i = 1 to ActiveWorkbook.Sheets.Count sh.Range("B" & r).Value = _    ActiveWorkbook.Sheets(i).Range("D9") r = r + 1 next i

nyanya324
質問者

補足

お蔭様で全てのシートのデータを取得できるようになりました。 どうやらこのマクロだとシート追加の行をいれないと動かなくなるようでした。 素人は適当に編集するもんじゃありませんね; さて、せっかくでしたので、ファイル名の取得だけでなくシート名の取得も出来るようにしたいと思いましたが・・・ Sub sample() Dim folder As String Dim sh As Worksheet Dim file As String Dim r As Long folder = "C:abc\M1501~M2140\" 'ファイルがあるフォルダ Set sh = Worksheets.Add(After:=Worksheets(Worksheets.Count)) '結果用にシート追加(今までのシートの後ろに) sh.Range("A1").Value = "ファイル名" '見出し sh.Range("B1").Value = "A1" '同上 sh.Range("C1").Value = "B3" '同上 r = 2 '結果出力行の初期値 file = Dir(folder & "*.xls") 'フォルダ内の最初の.xlsファイルを取得 Do While file <> "" 'ファイル名がある間 Workbooks.Open folder & file 'そのファイルを開く sh.Range("A" & r).Value = file '結果シートのA列にファイル名を sh.Range("B" & r).Value = sheet For i = 1 To ActiveWorkbook.Sheets.Count sh.Range("C" & r).Value = _ ActiveWorkbook.Sheets(i).Range("D9") r = r + 1 Next i '結果シートのC列に開いたブックのSheet1のA1の値 ActiveWorkbook.Close False '開いたブックを閉じる r = r + 1 '結果出力行+1 file = Dir '次のファイル名取得 Loop '繰り返す End Sub 直感で sh.Range("B" & r).Value = Sheet と追加しましたがどうやらこれ自体がまったく違うようで、Bが空欄で出力されてしまいます。 どのようにすればいいでしょうか?

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問のコードでは「sh」が具体的に決る(決める)までに、使っているがこれはおかしい。 set Workbooks(ブックが決った段階でそのブック名).Worksheets(book名シート名またはシートのインデックス番号) のように、シートオブジェクトを特定してから使わないといけない。 「複数の」とか、なぜ、一般的なあいまいな表現で質問するのですか。 フォルダに在るエクセルブックすべてでしょう? シートも同じです。「複数」のと言っているが、そのブックに存在するすべてのシートなのか? 一部のようにも採られかねない。 プログラマは文章表現に神経質になれ。特に質問では。其れで大幅にかわることもあるよ。 ブック内のすべてならFor Each sh In Wb.Worksheetsが使えないかやってみること。 Wbは今問題にしているブックオブジェクト。Setで具体的にブックオブジェクトを指定した後のこと。

関連するQ&A

  • 複数のエクセルブックを開かず特定シートのセル抽出

    他の方の質問を参考に自作しましたが動作に時間が掛かる為、教えて下さい。  PCはWin10、エクセル2016、ファイル形式はxlsm  該当フォルダはネットワーク上\\○○○○\Users\ この中に複数ブックが存在  抽出したいデータは全てのブックの「メニュー」というSheetのA100からAO100までを  「集計.xlsm]のSheet1の2行目から抽出結果をA2からAO2までを2行目、3行目とずらして値で貼り付けたい 作成したVBAを見て良い方法をご教授下さい。 Sub 集約() Dim myFolder As Variant Dim fso As Object Dim GetFolder As Object Dim Fol As Object Set fso = CreateObject("Scripting.FileSystemObject") With Application.FileDialog(msoFileDialogFolderPicker) If .Show <> 0 Then myFolder = .SelectedItems(1) End If End With With CreateObject("WScript.Shell") .CurrentDirectory = myFolder End With Set GetFolder = fso.GetFolder(myFolder) For Each Fol In GetFolder.SubFolders Debug.Print Fol.Name Next Set GetFolder = Nothing 'フォルダの場所を変数に入れる Dim Folder_path As String Folder_path = Range("a1").Value '集計先のシートを指定し、変数に入れる Dim w Set w = Worksheets("sheet1") '集計するブックを変数に入れる Dim Merge_book As String Merge_book = Dir(Folder_path & "\*.xlsm*") 'いったん数値をクリア w.Range("b" & Rows.Count).Clear '集計先のシートの1行からスタート Dim n n = 4 '指定したフォルダから、Excelファイルを探す Do Until Merge_book = "" Workbooks.Open FileName:=Folder_path & "\" & Merge_book '見つかったら、A列にファイル名、B列に集計値を入れる w.Range("a" & n).Value = Merge_book w.Range("b" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range("a100").Value w.Range("c" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range("b100").Value w.Range("d" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range("c100").Value    ・・・・・・・・・・・・・・・省略・・・・・・・・・・・・・                         ・ ("ao100").Value w.Range("ap" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range '次の行へ n = n + 1 '集計するブックを閉じる Workbooks(Merge_book).Close '次のファイルを探しに行く Merge_book = Dir() Loop End Sub この方法は1つのフォルダ直下に全てのブックを入れないと動かないのでPCの容量に負担が掛かり画面もチラチラし、時間も掛かる為、もっと効率的な方法で作業を行いたいのです。 よろしくお願いいたします。

  • Excel VBA 複数のブックの複数シートから

    Excel VBA 複数のブックの複数シートからデータをコピーするマクロを作成したのですが、 コピー部分が上手く作動せず、訳の解らないデータが貼り付いてしまいます。 ちゃんとファイルは読み込んでいます。 、 VBA超初心者なので、うまく動作しませんでした。 どこが悪いのか教えて頂けないでしょうか。 やりたいことは ・同一フォルダ内に複数のExcelファイルがある ・各ファイル内には複数のシートがあり、シート数はファイル毎にばらばら ・各シートの構造は全て同じ ・VBAを保存してあるExcel(貼り付け用.xls)も同じフォルダに置いて作業します ・JEまとめ.ファイルの原本シートをコピーして、シート名に日付を入れたシートに ・全シート下記のセルのコピー(値、縦横変換)を日付をいれた原本コピーのシートに B1~3セル→A~C B4~5セル→G~H B6セル→J J22~24→D~F をシートの一番最初の行は見出しなので、その後上から順に値の貼付けをしたいのです。 エクセルは2003です。 宜しくお願いいたします。 Sub 集計コピー操作() Dim 集 As Workbook, 開 As Workbook Dim 原 As Worksheet, コピー As Worksheet Dim パス As String, フォルダ As String Dim 日付 As String Dim 紙 As Integer Dim 終 As Integer Dim 数 As Long '書込み行 '日付取得 日付 = Format(Date, "yyyymmdd") '新規シート追加 'シート名チェック Set 集 = ThisWorkbook For Each 原 In 集.Worksheets If 原.Name = 日付 Then 原.Activate Exit For End If Next 原 'シート作成 If 原 Is Nothing Then 'シート名が存在しない場合は作成 Sheets("原本").Copy Before:=Sheets(1) Set 原 = ActiveSheet 原.Name = 日付 Else End If 'Application.ScreenUpdating = False '画面ちらつき防止 'ファイル名設定 Set 集 = ThisWorkbook 'このbookをまとめとする。 パス = ThisWorkbook.Path 'このbookのパスを取得 フォルダ = Dir(パス & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until フォルダ = Empty '全て検索 If フォルダ <> 集.Name Then 'book名がこのbookの名前でなければ 'コピーブックの設定 Set 開 = Workbooks.Open(パス & "\" & フォルダ) '開ファイルとする。 紙 = Worksheets.Count 'シートカウント For 終 = 1 To 紙 数 = 数 + 1 'シートループ処理 For Each コピー In 開.Worksheets With WorksheetFunction 原.Cells(数, "A").Value = コピー.Range("B1").Value 原.Cells(数, "B").Value = コピー.Range("B2").Value 原.Cells(数, "C").Value = コピー.Range("B3").Value 原.Cells(数, "G").Value = コピー.Range("B4").Value 原.Cells(数, "H").Value = コピー.Range("B5").Value 原.Cells(数, "J").Value = コピー.Range("B6").Value 原.Cells(数, "D").Value = コピー.Range("J22").Value 原.Cells(数, "E").Value = コピー.Range("J23").Value 原.Cells(数, "F").Value = コピー.Range("J24").Value End With Next Next 'ブッククローズ処理 開.Close (False) '保存せずに閉じる End If フォルダ = Dir 'フォルダ内の次のbookを検索 Loop Application.ScreenUpdating = True '画面ちらつき防止を解除 MsgBox 紙 & "件のファイルをコピーしました。" End Sub

  • ファイル間のシートコピー(Match関数とArray)

    初心者の質問で申し訳ありませんが、困っているので教えてください。 AというファイルとBというファイルがあります。 Bがマクロ実行ファイルで、Bでは複数のマクロがあり、そのマクロにAのデータが必要です。 Aのファイルには13シートありますが、そのうちの5つのシートの情報を Bファイルのシートにコピーしたいというのが状況です。 (Bファイルには同名のシートが既にあり、Aファイルから毎回同じシート名のデータをコピーしたい) *ActiveWorkbookがAファイルになっているという状態で、下記のように 書きましたが、"r=..."のところでアプリケーション定義、またはオブジェクト定義のエラーになります。 Dim sh As Worksheet Dim r As Long Dim myTarget As Variant With ActiveWorkbook For Each sh In Sheets r = WorksheetFunction.Match( _ sh.Name, Array("A", "B", "C", "D", "E"), 0) If r > 0 Then sh.Cells.Copy Workbooks("B").Worksheet(sh.Name).Paste End If Next End With よろしくお願いいたします。

  • VBAで別ブックを複数列検索し、隣のセルの値を取得

    book2(master)のセルA1、2、3・・・・の値でbook1(data)の任意の複数列(以下では3列目、8列目としています)を検索し、検索結果の右側のセルの値(以下の例の場合4列目と9列目)をbook2(master)の検索元セルの右側に書き込みたいのですが、実行すると実行時エラー1004アプリケーションまたはオブジェクトの定義エラーです。 と表示されてしまいます。回避方法について教えて頂けますでしょうか また、複数列の検索方法について適切な方法がありましたら教えて頂けますでしょうか 例) master A2”aa” 空欄 ←hoを取得 A3”bb” 空欄 ←3aを取得 A4”cc” 空欄 data(ランダムに配置されています) 1 2 3 4 5 6 7 8 9    ca de      d4 2f    c1 3a      bb 3a    aa ho      7e ee Sub kensaku() Dim book1 As Workbook Dim book2 As Workbook Dim sheet1 As Worksheet Dim sheet2 As Worksheet Dim rng As Range Dim r As Long Set book1 = Workbooks.Open("D:\Book1.xls") Set book2 = Workbooks.Open("D:\Book2.xls") Set sheet1 = book1.Sheets("data") Set sheet2 = book2.Sheets("master") r = 2 Do While sheet2.Range("A" & r).Value <> "" Set rng = sheet1.Range(Columns(3), Columns(8)).Find(sheet2.Range("A" & r).Value, LookAt:=xlWhole) If Not rng Is Nothing Then sheet2.Range("B" & r).Value = rng.Offset(0, 1).Value End If r = r + 1 Loop End Sub

  • 【VBA】複数のブックを1つのシートにまとめる

    あるフォルダ内に複数のブックが入っており、新しいブックに1シートでまとめようとしております。 フィルターを使用すればよいのかもしれませんが、マクロを使用したいです。 (1)全て同じフォーマットである (2)全てA17から数値が入力されているので、16行目まではフォーマットを残し、A17行目以降K列までをコピーして結合したい Sub 結合() '結合したいファイルがあるフォルダの場所 cドライブなら "C:\test\" Const Fol As String = "C:\test\" Dim Fn Dim NewFile As Workbook Dim Wb As Workbook Dim Ws1 As Worksheet Dim R As Range Set NewFile = Workbooks.Add Set Ws1 = NewFile.Worksheets(1) Set R = Ws1.Range("A17") Fn = Dir(Fol, vbNormal) Do Until Fn = "" Set Wb = Workbooks.Open(Fol & Fn) 'ワークシート1をコピーする場合は Wb.Worksheets(1) Set Ws1 = Wb.Worksheets(1) 'タイトル行を設定 If ck = False Then For cnt = 1 To 4 Wb.Worksheets(cnt).Range("A1:J16").Copy Destination:=NewFile.Worksheets(cnt).Range("A1") Next cnt ck = True End If For cnt = 1 To 4 Set Ws1 = NewFile.Worksheets(cnt) Set Ws2 = Wb.Worksheets(cnt) R = Ws1.Cells(Rows.Count, 1).End(xlUp).Row + 1 With Ws2 End With Next 'A17行目からコピーして結合する(→本当はA17行目~K列までを反映したい) Ws2.Range("A17", Ws2.Cells(Rows.Count, 3).End(xlUp)).Resize(, 20).Copy R If R.Offset(1).Value = "" Then Set R = R.Offset(1) Else Set R = R.End(xlDown).Offset(1) End If Wb.Close 'Debug.Print Fn Fn = Dir Loop Set R = Nothing Set Ws1 = Nothing: Set Ws2 = Nothing Set Wb = Nothing: Set NewFile = Nothing End Sub マクロは触ったことない初心者でグーグル検索をしながら作ってみました。 一応実行するとエラーは出ないのですが、結合されたリストが飛び飛びで、理由がわかりません。 どなたかおわかりになりますでしょうか・・・。

  • エクセル VBAで 各シートの特定セルの一覧の作成

    エクセル VBAで 各シートの特定セルの一覧の作成について教えて下さい。 同一フォーマットのシート(20~40シート前後)のエクセルファイルが7個ありまして、 こちらの各シートの特定セルのデータを一覧化したいのです。 色々と調べ以下◆で一覧が作成可能となりました。 以下◆では、モジュールに記載した同一ファイルの全シートの 指定セルデータを”一覧”シートに書き出します。 こちらを、一覧データを取得する独立した1ファイルとし、 ”ファイルを開く”のダイアログを表示させ 任意のファイルを指定し、そのファイルの指定セルのデータを一覧化 したいと思っています。 独立した一覧ファイルと、データ元であるファイルは同一フォルダに あるとは限らないので、 自分で選択できる様にしたいのです。 また、シート名は 07nnnn、08nnnnと決められた名前のつけかたなのですが、 一覧化する対象シートを08から始まる名前のシートとしたいのです。 Application.GetOpenFilename("Microsoft Excelブック,*.xls,テキストファイル,*.txt") で”ファイルを開く”のダイアログは開く様になったのですが、 開いたファイルのデータを読んだ結果となりませんでした。 おそらく、書き方が違ったのだと思います。 エクセルは2003を使用しています。 説明不足、情報不足がございましたら、ご指摘願います。 宜しくお願い致します。 ◆----- Sub 一覧作成() Dim sh As Worksheet, r As Range Const sName = "一覧" Worksheets(sName).Cells.ClearContents Worksheets(sName).Activate Range("B3").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.ClearContents Range("B3").Select Set r = Worksheets(sName).Range("B3") For Each sh In Worksheets If (sh.Name <> sName) Then With sh r.Value = .Name r.Offset(, 1).Value = .Range("H2").Value r.Offset(, 2).Value = .Range("E3").Value r.Offset(, 3).Value = .Range("E4").Value End With End If Set r = r.Offset(1, 0) Next End Sub

  • vba 特定の複数シートを別ファイルで保存。

    ブック内にA,Bと2つのシートがあり、ボタンをクリックすると特定の回数、シートAの情報が新規作成されたシートCにコピーされ、シートCとシートBの2シートが別ファイルとして保存される。という動きを繰り返したいのですが、 新規生成されるシートCだけを別ファイルで保存することまでは出来たのですが、シートBが追加できず困っています。 Sub 分割() Dim cpy As Range Dim pst As Range Dim path 'ファイルパス path = ActiveWorkbook.path Dim CopyWorkBook Dim CopyWorkSheet1 Dim CopyWorkSheet2 Dim Position(2,2) 'ここにはシートCを作成する際の情報が入っている。 '新規シートCを作成してシートAからデータをコピー。 For i = 1 To 2 Step 1 'とりあえず2シート作成する。 Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = Position(i, 2) 'まずは、タイトル欄をコピー Worksheets("Sheet1").Activate Set cpy = Worksheets("Sheet1").Range("A2:Q2") Worksheets(Position(i, 2)).Activate Set pst = Worksheets(Position(i, 2)).Range("A2:Q2") pst.Value = cpy.Value '貼り付け End With 'シートを別名で保存 Set CopyWorkSheet1 = Worksheets(Position(i, 2)) Set CopyWorkSheet2 = Worksheets("シートB") CopyWorkSheet1.Copy ' CopyWorkSheet2.Copy ←これでシートBもコピーされるかと思いましたが、シートBが上書きされてしまう。 Set CopyWorkBook = ActiveWorkbook ActiveWorkbook.SaveAs path & "\" & Position(i, 2) & "xls", xlWorkbookNormal CopyWorkBook.Close Next End Sub 質問は2つあります。 (1)シートBも新規作成されたシートCと一緒に別ブックに保存したいのですが、どうすればいいでしょうか? (2)シートのコピーの動きがイマイチよくわかりません。 今の私の環境だと(ネットで調べた書き方ですが)、シートを別ブックにコピーする際、 Set CopyWorkSheet1 = Worksheets("シートA") CopyWorkSheet1.Copy Set CopyWorkBook = ActiveWorkbook となっていますが、Setで、コピー元のシートAの情報をCopyWorkSheet1にコピーしたあと、 CopyWorkSheeet1.Copy となっていますが、この意味がわかりません。 なぜ更にコピーしているのでしょうか?またこれで、別ブックにシートが追加されてる理由もわかりません。 また、この処理の後に、 Set CopyWorkBook = ActiveWorkbook と、ブックの情報をコピーしていますが、普通に考えると最初にブックの情報をコピーして別名のブックを生成しておく必要があるように思えるのですが、後でよい理由も分かりませんし、これだと、Activeのワークブックのシート情報も全部コピーされてしまう気がするのですが。。。 この辺が全然分かっていないので、解説頂けるか参考サイトを教えて頂けないでしょうか。 よろしくお願い致します。

  • TextBoxの値を複数シートのセルに記入する

    よろしくお願いします。 TextBoxの値を複数シートのセルに記入するようにしたいのですが 一つのシートにしか記入されません。 醜い構文ですみません。 Private Sub CommandButton1_Click() Dim a As Long Dim b As Long Dim f As Long Dim h As Long Dim c As Range Dim d As Range Dim e As Range Dim g As Range With Worksheets(Array("駐車状態", "材料", "外壁1", "外壁2", "屋根1")).Select Set c = Cells(1, 2) For a = 1 To 140 Step 7 Set c = Union(c, Cells(a, 2)) c = TextBox1.Value Next c.EntireRow.Select Set d = Cells(1, 4) For b = 1 To 140 Step 7 Set d = Union(d, Cells(b, 4)) d = TextBox1.Value Next d.EntireRow.Select Set g = Cells(2, 2) For h = 2 To 141 Step 7 Set g = Union(g, Cells(h, 2)) g = TextBox2.Value Next g.EntireRow.Select Set e = Cells(2, 4) For f = 2 To 141 Step 7 Set e = Union(e, Cells(f, 4)) e = TextBox2.Value Next e.EntireRow.Select End With End Sub

  • VBA 他のブックから複数のシートのデータをコピー

    VBA初心者です。 他のブックの複数のシートの最終行のデータをコピーし1つのシートにまとめたいと思っています。 参照元 シート1 最終行20 AからD シート2 最終行30 AからD シート3 最終行15 AからD のそれぞれのデータ メインシート 1行目 シート1のAからD 2行目 シート2のAからD 3行目 シート3のAからD を値のみ貼り付けたいです 色々と検索しチャレンジするシート1のみであればなんとか成功するまで完成したのですが、インデックスが有効ではありませんとでてエラーがでます。原因は、シート2のデータをコピーする際、参照元のファイルがActiveになっていないからだと考えているのですが、参照元のファイル名が毎回違いますので、ファイルを選択してファイルを開いてから作成しようとチャレンジしています。 Sub Copy() 'コピー元のファイルを選択して開く Dim OpenFile As String ChDir "C:\Users\name\Documents\folder" OpenFile = Application.GetOpenFilename("Excelブック,*.xlsx") MsgBox OpenFile & " を開きます" Workbooks.Open FileName:=OpenFile 'データをコピー 'シート1 Worksheets("シート1").Range("A20:D20").Copy Workbooks("メインブック.xlsm").Worksheets("メインシート").Activate Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'シート2 Worksheets("シート2").Range("A30:D30").Copy Workbooks("メインブック.xlsm").Worksheets("メインシート").Activate Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 良きアドバイスよろしくお願いします。

  • 複数のExelbookを1シートにまとめるVBA

    Accessクエリから出力したファイルをフォルダへ格納し、Excelbookを1つのExcelへまとめています。 しかし、複数の人間がExcelへ出力する為、上書きされないよう、運用上、Accessからの出力ファイル名がExcel出力時自動的に変更されるようにいたしました。(クエリ名&日付時刻) すると、それに合わせExcelシート名も変更されてしまう為、下記のVBAが使用できなくなってしまいました。 出力されるExcelは1シートのみにデータが入っています。 フォルダ内にある全book・全シートのデータを1シートに統合、もしくは"シート名"を指定せずに複数ファイルの1シート目を1つのExcelにまとめる事は可能でしょうか? どなたかご教授をお願いいたします。 Sub Sample1() Worksheets("Sheet2").Activate Dim buf As String, i As Long Dim j buf = Dir(Sheets("sheet1").Range("A1").Value & "\*.xls") Do While buf <> "" Workbooks.Open Worksheets("sheet1").Range("A1").Value & "\" & buf Sheets("シート名").Range("A2:AL1000").Copy ThisWorkbook.Activate Range("A65536").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Workbooks(buf).Activate Application.CutCopyMode = False Workbooks(buf).Close SaveChanges:=False buf = Dir() Loop End Sub

専門家に質問してみよう