【エクセルVBA】輝度分布csvファイルを順番に読み込む方法

こんにちは、ヒガシです。

 

このページでは、複数ある既存の輝度分布csvファイルをエクセル上に順番に読み込んでいく方法をご紹介していきます。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

やりたいことのイメージ共有

あなたのやりたいことと本記事の内容が一致していなければ意味がありませんので、

まずは概要をご説明します。

 

以下のように複数のcsvファイルがあったとします。

読み込む対象の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ファイルをエクセル上に順番に読み込む方法をご紹介しました。

実験で取得した画像なんかを処理する際などにぜひご活用ください。

 

なお、そもそも画像から輝度分布を作る方法がわからない、という方は以下の記事でご紹介しています。

フォルダ内画像の輝度分布を順番にcsvファイルに出力するexeファイル|ヒガシ@メーカーエンジニア
この記事で紹介するexeファイルは、以下のようにexeファイルと同じフォルダに配置したimgフォルダ内にある 以下のような複数の画像に対して 画像内の輝度分布を取得し、以下のようにcsvファイルとして順番に出力します。 csvファイルの中身...

興味があればこちらもあわせてご覧ください。

 

それではまた!

 

コメント

タイトルとURLをコピーしました