• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォルダ内全ファイルからデータを取得する方法)

フォルダ内全ファイルからデータを取得する方法

このQ&Aのポイント
  • フォルダ内全ファイルからデータを取得する方法についてお伺いします。
  • データの最終行を取得するために特殊なコードを使用しています。
  • ファイルが存在しないエラーが発生していますが、正しく呼び込んでいることを確認しています。

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

  • ベストアンサー
回答No.1

作りかけ & 部分的に抜き出したコードのようなので見当違いかも。 FPath = "*:\" & MyMonth & "\" '指定が間違っていませんか? ChDir FPath msgbox curdir 'フォルダの確認をしてみる。 とか Do While sFile <> "" msgbox sfile '確認メッセージを出してみる If sFile <> ThisWorkbook.Name Then Workbooks.Open sFile などをやってみてください。

intyiyasaka
質問者

補足

NotFound404さん いつも助けてくださって、ありがとうございます。 イミディエイトで確認していたのですが、 パスがめちゃくちゃでした。 以前に作ったものを貼り付けたのですが、 動かなかったので、いろいろいじっているうちに どつぼにはまってしまったというか、ぐちゃぐちゃでした。 改めて、書き直して動きました。 書き直したコードは下記のとおりです。 ありがとうございました。 Sub 集計() Dim sDPath As String, sFile As String, cnt As Long, sFilePath As String, m As Long, MyMonth As String m = Range("A1").Value - 1 MyMonth = m & "月" Set Wsh = CreateObject("Wscript.Shell") sDPath = "*:\****\" & MyMonth sFile = Dir(sDPath & "\" & "*.xls") sFilePath = sDPath & "\" & sFile Set Wsh = Nothing '画面更新オフ Application.ScreenUpdating = False 'Kドライブにある前月のフォルダの中にあるすべてのエクセルファイルのデータを取得 Do While sFile <> "" If sFile <> ThisWorkbook.Name Then cnt = Cells(Rows.Count, 1).End(xlUp).Row + 1 Workbooks.Open sFilePath Columns("A:B").Delete ActiveSheet.UsedRange.Resize(Cells(Rows.Count, 1).End(xlUp).Row).Copy Destination:=ThisWorkbook.Sheets(1).Cells(cnt, 1) ActiveWorkbook.Close SaveChanges:=False sFile = Dir() End If Loop '画面更新オン Application.ScreenUpdating = True '名前をつけて保存 Application.DisplayAlerts = False Filedate = Format(Date, "yyyymm") ActiveWorkbook.SaveAs Filename:=sDPath & "\" & "*****" & Filedate & ".xls" Application.DisplayAlerts = True '画面更新オン Application.ScreenUpdating = True End Sub

関連するQ&A