Excel2013VBAで地震波データを読み込んで、地震波時刻歴図を作成します。
今回は、地震波のテキストデータを読み込んで、新しくWorkbookを開き、図化用のデータをこのExcelシート上に書き込みます。
今回使用する地震波加速度時刻歴データの例
今回は、次のような地震波加速度時刻歴データ(テキストデータ ”地震波サンプル.txt”)を使用します。
まず、1行目は、つぎのようなデータからなります。
_1~45文字目 : データの説明
46~55文字目 : 最大加速度(Gal) → 125.3743Gal
71~75文字目 : 時間ステップ(sec) → 0.010sec
76~80文字目 : データ数 → 16384個
2行目からは、小数点以下5桁の実数(Fortranでいえば”F8.5”)のデータ16,384個が続きます。
このデータは最大値が1.00となる数値で、最大加速度(このデータでは125.3743Gal)をかけると加速度時刻歴データとなります。また、これら数値は、上から順に0.000sec、0.010sec、0.020secと、0.010secずつ増えていく時刻に対応します。
テキストデータ読み込み・書き込み操作の流れ
Excelを立ち上げ、「開発」タグからVisual Basicを起動し、”Module1”にテキストデータの読み込みと図化用データの作成操作を記述していきます。
ここでは、次の順に操作を記述しています。
- 変数の定義
- [ファイルを開く]ダイヤログボックスを表示して、地震波データファイルを選定
- 新しいワークブックを開く
- 選択した地震波データファイルをオープンして、データを読み込み
- 図化用データに加工(B列に時刻、C列に加速度)して、新しいワークブックに書き込み(時刻と加速度を計算して、B列に時刻、C列に加速度を出力)
- 4.5.を繰り返す
- 地震波データファイルを閉じる
テキストファイルの読み込み方法
テキストファイルの読み込みに使用したオブジェクト、メソッド、関数を説明します。
ダイアログボックスを表示して、選択したファイルのフルパスを返す
ApplicationオブジェクトのGetOpenFilenameメソッドを使用します。
Application.GetOpenFilename(FileFilter,省略,Title,省略,省略)
FileFilter:
CSVファイルを指定する場合 → ”CSVファイル(.csv),.csv”
テキストファイルを指定する場合 → ”テキストファイル(.txt),.txt”
省略すると → ”すべてのファイル(.),(,)”
Title:ダイアログボックスが開かれたときに、左上に現れる文字
省略時 ”ファイルを開く”と表示される
新しい”Workbook”を開く
Workbooks.Add
テキストデータを開き、閉じる
テキストデータを読み書きするときは、テキストに何を実行するかに応じた命令文でファイルを開き、実行終了時にファイルを閉じます。
ファイルを開く
読み込み:Openファイル名 For Input As #番号
書き込み:Open ファイル名 For Output As #番号
※ファイル名は上述のフルパスで指定します。
ファイルを閉じる
Close #番号
テキストファイルを1行ずつ読み込む
Line Input #番号, 変数
1行ずつ読み取ったデータからデータを抜き出す
Mid(文字列,開始位置,文字数)
※開始位置(何文字目)から指定した文字数を抜き出す
実行してみる
作成した内容を実行してみます。
「ユーザーフォームの実行」をクリックすると、
「ファイルを開く」ダイアログボックスが開きますので、図化したいデータ ”地震波サンプル.txt” を指定して、「開く」をクリックします。
下図のように、1行目にデータの説明、最大加速度、時間間隔、時間ステップ数が、2行目から16385行目までは、A列にテキストデータ、B列に時刻、C列に地震波加速度が出力されました。
コメント