1. 測定データの例
以下のようなデータを考えます。温度を変えながら測定した結果を想定します。適当な関数を使って、データを生成しました。測定サンプル(N=5)としていて、少し特性を変えています。また、測定方法を変えた場合を想定して、「MeasureA」, 「MeasureB」と2つの結果を配置しました。
このデータの配置方法では、横軸を温度で表示するグラフは簡単に作成できますが、それ以外の値を横軸に取った場合は少し 手間が増えます。左下のグラフに作りましたが、例えば5つの測定サンプルはサイズを変えて試作した試料だとします。その場合は、サイズに対する依存性を確認する必要があり、横軸をサイズ、縦軸を測定値(MeasureA@80℃)を取り出しました。
Excelで作業することで、データからグラフ作成の操作などが視覚的でわかりやすいというのは利点なのですが、繰り返し処理をすることを考えると効率が下がります。
そこで、Accessデータベースにデータを格納して、必要な形でデータを抽出&グラフ作成をするプログラムを作成します。

2. Accessデータベースに入力
Access2013にデータを入力します。テーブルを設計して、そのテーブルにデータを入力します。テーブルの設計といっても、簡単なテーブルでの例となります。テーブルは、図のように定義します。- Name:測定名
- Sample:サンプル名
- Temp:温度
- Data:測定結果

次に、データを入力します。入力した結果が下図のようになります。そのままグラフに作りにくい形式のように見えますがデータを取り出すときのクエリを工夫することで効率的にグラフを作成します。データの保存をAcess, グラフの作成をExcelでやります。

3. データ抽出のサンプルプログラムの実行結果
データを抽出した結果を示します。データベースのファイル名と測定名、サンプル名を入力として、その条件での測定結果を抽出するというプログラムになっています。TempとDataのペアになっているのでこのデータを使ってグラフを作成することができる形です。この例は読み出したデータをそのままセルに入力ものとなっています。4. プログラム紹介
プログラムのソースコードを示します。Private Sub ReadDataBase_Click() Dim ado_con_obj As New ADODB.Connection Dim ado_rs_obj As New ADODB.Recordset Dim sql_string As String Dim db_path As Variant db_path = ActiveWorkbook.Path & "\" & Range("H8").Value ado_con_obj.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & db_path ado_con_obj.Open sql_string = " SELECT T_データ.[Name], T_データ.[Sample], T_データ.[Temp], T_データ.[Data]" _ & " FROM T_データ WHERE (((T_データ.Name)='" & Range("H9").Value & "') AND ((T_データ.[Sample])='" & Range("H10").Value & "')) ;" ado_rs_obj.Open sql_string, ado_con_obj, adOpenDynamic Dim i, j As Integer i = 1 '最初の列に、Nameを入れます。 For j = 0 To ado_rs_obj.Fields.Count - 1 Cells(i, j + 1) = ado_rs_obj.Fields(j).Name Next i = 2 'レコードの最後まで順番に読み出してセルに入力します。 Do Until ado_rs_obj.EOF For j = 0 To ado_rs_obj.Fields.Count - 1 Cells(i, j + 1) = ado_rs_obj.Fields(j).Value Next ado_rs_obj.MoveNext i = i + 1 Loop End Sub
0 件のコメント:
コメントを投稿