こんにちは、ヒガシです。
このページでは、複数ある既存の輝度分布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ファイルをエクセル上に順番に読み込む方法をご紹介しました。
実験で取得した画像なんかを処理する際などにぜひご活用ください。
なお、そもそも画像から輝度分布を作る方法がわからない、という方は以下の記事でご紹介しています。
興味があればこちらもあわせてご覧ください。
それではまた!
コメント