VBA

シートに書き出したファイル名を配列にいれる

こんにちは、エクセル救急隊です。

ノンプログラマーですが、お仕事効率化のためにVBAでツールを作っています。
コードを覚えるのは大変なので、すぐに使えるようコピペ用コードを用意しました。

指定シートに書き出したファイル名を配列にいれる

シート条件

  1. セルB1にフォルダのパスを貼り付け
  2. セルB4からファイル名を書き出し
  3. セルD4に実行可否の「OK」「NG」を設けている
  4. シート名は「マクロ実行」
指定したフォルダのファイル名をシートに書き出すこんにちは、エクセル救急隊です。 ノンプログラマーですが、お仕事効率化のためにVBAでツールを作っています。 コードを覚えるのは...

コード

Option Explicit
Sub ファイル名内容取得()
'-----------------------------------------------------------------------------------------------------------------------
'作成者:
'作成日時://()
'作成目的:B列のファイル名をすべて配列にいれる
'-----------------------------------------------------------------------------------------------------------------------

'-----------------------------------------------------------------------------------------------------------------------
'◇変数エリア(変数宣言は全てここに記入する)
'-----------------------------------------------------------------------------------------------------------------------
    Dim path As String 'フォルダのパス
    Dim MaxRow As Long '最終行
    Dim strFileN() As String 'ファイル名
    Dim strCheckR() As String '実行可否
    Dim intMaxC As Integer 'ファイル数
    Dim i As Integer 'ファイル数カウントなど
'-----------------------------------------------------------------------------------------------------------------------
'◇実行プログラム
'-----------------------------------------------------------------------------------------------------------------------
    '画面のチラツキをなくしマクロの処理速度を向上
    Application.ScreenUpdating = False

    '本当に実行するか分岐
    If MsgBox("マクロを実行しますか", vbOKCancel) = vbCancel Then
      Exit Sub
    End If

    'OKの場合
       
    'マクロ実行ファイルのマクロ実行シートを選択
    ThisWorkbook.Worksheets("マクロ実行").Activate
    
    '取得データ
    path = ThisWorkbook.Worksheets("マクロ実行").Range("B1").Value & "\"
    
    'B列を基準に最終行を取得
    MaxRow = Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    
    '配列最大数をカウント(ファイル数にあたる)
    intMaxC = WorksheetFunction.CountA(Range("B4:B" & MaxRow))
    
    '配列
    ReDim strFileN(intMaxC)
    ReDim strCheckR(intMaxC)
    
    'ファイル名&実行可否をマクロ実行シートから取得し配列に入れる
    For i = 1 To intMaxC
      strFileN(i) = ThisWorkbook.Worksheets("マクロ実行").Range("B" & (4 + i - 1)).Value
      strCheckR(i) = ThisWorkbook.Worksheets("マクロ実行").Range("D" & (4 + i - 1)).Value
    Next i
    
    '各配列の1からスタート(他にiを使用しているのリセットの意味で記載)
    i = 1
    
    'ここからは配列に格納したファイルの操作を自由に記載
    For i = 1 To intMaxC
      If strCheckR(i) <> "NG" Then
      
      'ここにいろいろ記載する
      '//////
      
      End If '実行可否のIF文「OK」「NG」
    Next i
     
     '既定
     ThisWorkbook.Worksheets("マクロ実行").Activate
     Application.ScreenUpdating = True
     Application.Goto Reference:=Range("A1"), Scroll:=True
     
     
     MsgBox "完了しました"
    
End Sub

 

補足

コピペしてすぐに使えるようにしたいため、長々と書いています。
上記の
‘ここにいろいろ記載する
の部分に配列に格納したファイルをどう処理するのか記載してお使いください。

おわりに

なにかのお役に立ちましたら幸いです。
以上、最後までお読みいただきありがとうございます。