VBAについて教えてください。 https://excel-macro.com/file_cell_get_sum/
VBAについて教えてください。 https://excel-macro.com/file_cell_get_sum/ こちらを参考にさせて頂いるのですが、シート名、セル番号を入力するとフォルダ内の指定したセルがすべて抽出できる仕組みです。 ご教授頂きたいのは、私が管理しているEXCELファイルは、シート名がファイルごとでバラバラになっており、セル番号の入力だけでデータを抽出したいです。(もし複数シートあれば、一番左側シートを抽出出来ると助かります。) 拙い説明で申し訳ありませんか、何卒宜しくお願いします。 Option Explicit Dim Fol_path As String Dim Maxcol As Long Dim i As Long Dim w As Worksheet Dim Seach_book As String Dim n As Long Sub file_cell_get_sum() On Error Resume Next 'エラー無視 Application.ScreenUpdating = False '画面更新非表示 'データクリア Range(Cells(7, 1), Cells(7, 1).End(xlDown)).ClearContents Range(Cells(7, 3), Cells(7, 3).End(xlToRight).End(xlDown)).ClearContents Fol_path = Range("B2").Value 'フォルダ取得 Maxcol = Cells(4, Columns.Count).End(xlToLeft).Column 'シート設定の最終行取得 ReDim sh_name(Maxcol - 2) As String ReDim cell_no(Maxcol - 2) As String 'シート名、セル番号取得 For i = 3 To Maxcol sh_name(i - 2) = Cells(4, i).Value cell_no(i - 2) = Cells(5, i).Value Next Set w = Worksheets(i) '集計先のシートを指定し、変数に入れる Seach_book = Dir(Fol_path & "\*.xls*") '集計するブックを変数に入れる n = 7 '7行目から '指定したフォルダから、Excelファイルを探す Do Until Seach_book = "" Workbooks.Open Filename:=Fol_path & "\" & Seach_book w.Range("a" & n).Value = Seach_book '設定した値を順番に取得 For i = 1 To UBound(sh_name) w.Cells(n, i + 2).Value = Workbooks(Seach_book).Worksheets(sh_name(i)).Range(cell_no(i)).Value Next i n = n + 1 Workbooks(Seach_book).Close '集計するブックを閉じる Seach_book = Dir() '次のファイルを探しに行く Loop Application.ScreenUpdating = True '画面更新表示 MsgBox "完了しました" End Sub
Visual Basic・29閲覧
ベストアンサー
>もし複数シートあれば、一番左側シートを抽出出来ると助かります。 Worksheets(sh_name(i))のコードで「シート名称」で指定していますすが、 Worksheets(シート名称)→Worksheets(1)で一番左のシートを指定できます。 1は数字の1で、左から1,2,3・・・と番号でシートを指定できるということです。
質問者からのお礼コメント
ご返信ありがとうございます。 他の質問についても回答頂きまして本当にありがとうございます。こちら解決しました!重ねてですが、ありがとうございます。
お礼日時:2/26 12:57