VBA

シートに書き出したファイル名からファイルを開く

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

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

シートに書き出したファイル名からファイルを開く

シート条件

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

コード

Option Explicit
Sub ファイルを開く()
'-----------------------------------------------------------------------------------------------------------------------
'作成者:
'作成日時://()
'作成目的:ファイルを開く
'-----------------------------------------------------------------------------------------------------------------------

'-----------------------------------------------------------------------------------------------------------------------
'◇変数エリア(変数宣言は全てここに記入する)
'-----------------------------------------------------------------------------------------------------------------------
    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
       
        'リンクを更新せずにファイルを開く
        Workbooks.Open path & strFileN(i), 0
      
      End If '実行可否のIF文「OK」「NG」
    Next i
     
     '既定
     ThisWorkbook.Worksheets("マクロ実行").Activate
     Application.ScreenUpdating = True
     Application.Goto Reference:=Range("A1"), Scroll:=True
     
     
     MsgBox "完了しました"
    
End Sub

 

補足

前回の続きなので、
‘ここにいろいろ記載する

の部分に

‘リンクを更新せずにファイルを開く
Workbooks.Open path & strFileN(i), 0

を追加しただけのコードです。

おわりに

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