
こんにちは、ヒガシです。
このページでは、複数ある既存の輝度分布csvファイルをエクセル上に順番に読み込んでいく方法をご紹介していきます。
それではさっそくやっていきましょう!
やりたいことのイメージ共有
あなたのやりたいことと本記事の内容が一致していなければ意味がありませんので、
まずは概要をご説明します。
以下のように複数のcsvファイルがあったとします。

そしてこれらのファイルの中には以下のようにある画像の輝度分布が出力されているとします。(各セル内の数値が各ピクセルの輝度値です。)

この状態から以下の画像のようにそれぞれのcsvファイルのフルパスをエクセルシート上で指定してあげることで、

これらを順番にエクセルシート上にインポートしていきます。(下の方のシート名を見ていただけると、シートごとに読み込んでいる様子がわかると思います。)

あなたのやりたいことと一致していればぜひ続きをご覧ください。
輝度分布ファイルをフルパスを指定する
まずはエクセルシートを整えます。
今回は先述した通り、エクセルシート上に記載されているフルパスのファイルを読み込みに行きますので、それらを記述する場所を作ります。

以降でVBAのプログラムを紹介しますが、上記範囲にフルパスが記載されている前提で書いてます。
プログラムをそのまま使う場合は、上の画像とまったく同じ構成にしてください。
輝度分布の読み込みプログラム
それでは上記の情報をもとにVBAを使って輝度分布csvファイルをエクセル上に読み込みます。
以下がそのコードです。
Sub Data_Import()
    Application.ScreenUpdating = False
    Dim num_sheet As Integer
    num_sheet = Range("B15").End(xlUp).Row - 4
    main_window = ActiveWindow.Caption
    For i = 1 To num_sheet
        Sheets("main").Activate
        new_sheet_name = "data" & i
        Sheets.Add
        Sheets(1).Name = new_sheet_name
        Sheets(new_sheet_name).Move After:=Worksheets(Worksheets.Count)
        csv_full_path = Sheets("main").Cells(4 + i, 2)
        Workbooks.Open (csv_full_path)
        window_name = ActiveWindow.Caption
        end_row = Range("A1").End(xlDown).Row
        end_col = Range("A1").End(xlToRight).Column
        Range(Cells(1, 1), Cells(end_row, end_col)).Copy
        Windows(main_window).Activate
        Sheets(new_sheet_name).Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Windows(window_name).Close
    Next
End Sub
あとはこのプログラムを実行するだけでcsvファイル内の輝度値を順番に読み込めます。
おわりに
というわけで今回は複数ある既存のcsvファイルをエクセル上に順番に読み込む方法をご紹介しました。
実験で取得した画像なんかを処理する際などにぜひご活用ください。
なお、そもそも画像から輝度分布を作る方法がわからない、という方は以下の記事でご紹介しています。

興味があればこちらもあわせてご覧ください。
それではまた!

 
  
  
  
  

コメント