VBAでワークシート上に地震波時刻歴図を作成する!

プログラミングの勉強

Excel2013VBAで地震波データを読み込んで、地震波時刻歴図を作成します。

今回は、図化用データを書き込んだワークシート上に、地震波時刻歴図を作成します。

地震波時刻歴図を作成するプロシージャの作成

VBAで地震波時刻歴のテキストデータを読み込んで図化用データをつくる!で使用した”Module1”に、図化用のプロシージャ(Sub 地震波時刻歴図作成)を記述していきます。

また、地震データ読み込みと地震波時刻歴図作成をサブルーチンとして順番に実行させるメインのプロシージャ(Sub メインプログラム)を作成します。

この際、地震波データの個数Nは、Sub 地震波時刻歴図作成に引き継ぐため、宣言セクションで定義します。

Sub メインプログラムSub 地震波時刻歴図作成は次のように作成しました。Sub 地震波データ読み込みは変数Nの定義を除いただけで変更ありません。

以下、使用したコマンド等を説明します。

グラフの作成コマンド

つぎのコマンドを用いてグラフを作成します。

With ActiveSheet.Shapes.AddChart.Chart
.ChartType = xlXYScatterLinesNoMarkers → 散布図マーカーなしの線図
.SetSourceData Range(範囲,範囲)      → データの範囲
.SetElement (msoElementPrimaryCategoryGridLinesMajor)
                      → グラフの縦目盛り線追加
.SeriesCollection(1).Format.Line.Weight = 太さの数字
                        → 線の太さを指定
End With

ちなみに、Withステーションでは、指定した項目の色や範囲、書式等を設定します。

With 指定した項目(何々)
  指定した項目(何々)の色や範囲や書式などを指定
  (※何々を省略して指定するものを記述)
End With 

例えば、今回の例の中から”Gurafu.Chart.ChartTitle.Format.TextFrame2.TextRange.Font” のサイズを12に指定していますが、.Sizeより前の指定はWithで指定しているので、.Size=12のみ記述しています。

With Gurafu
   ~
  With .Chart
    ~
    With .ChartTitle.Format.TextFrame2.TextRange.Font
      .Size = 12
    End With
  End With
End With

ワークシート上にグラフを表示

ワークシート上に埋め込みオブジェクトとしてグラフを表示します。

Dim 変数 As Object
Set 変数= ActiveSheet.ChartObjects(1)
 または
Set 変数= ActiveSheet.ChartObjects(“グラフ名”)
※(1)はワークシートに埋め込まれるグラフのインデックス番号ですが、グラフ名を指定することもできます。
※ここで有効となっているワークシートは”Sub 地震データ読み込み”でデータを書き込んだワークシートです。

グラフオブジェクトの名前、位置、大きさの指定

グラフオブジェクト
.Name = “名前”   ‘グラフの名前
.Top = 数字     ‘上下の位置
.Left = 数字     ‘左の位置
.Width = 数字    ‘幅
.Height = 数字    ‘高さ

グラフタイトルの有無、名前、凡例の有無

グラフオブジェクト.Chart
.HasTitle = True          ‘グラフタイトルあり(なしの場合False)
.ChartTitle.Text = “タイトル名”   ‘グラフタイトル
.HasLegend = False        ‘凡例なし(ありの場合True)

グラフタイトルのフォント

グラフオブジェクト.Chart.ChartTitle.Format.TextFrame2.TextRange.Font
.Size = 12             ‘タイトルの文字サイズ
.Name = “MS Pゴシック”    ‘タイトルのフォント
.Bold = False           ‘Boldにしない(する場合True)

軸の指定

グラフオブジェクト.Chart.Axes(軸指定) 
     ※横軸 Axes(xlCategory)、縦軸 Axes(xlValue)
.HasTitle = True           ‘軸タイトルあり(なしの場合False)
.AxisTitle.Text = “タイトル名”         ‘軸タイトル
.TickLabels.NumberFormatLocal = “書式”  ‘横軸数値の書式

軸のフォント

グラフオブジェクト.Chart.Axes(軸指定).AxisTitle.Format.TextFrame2 .TextRange.Font
.Size = 12         ‘タイトルの文字サイズ
.Name = “MS Pゴシック”  ‘タイトルのフォント
.Bold = False        ‘Boldにしない(する場合True)

プロシージャの実行

ここでは、VBAにて「デバック」→「VBAProjectのコンパイル」を実施しておきます。

Excelシート上で、「マクロ」→ メインプログラムを選び →「実行」をクリックして実行します。

「ファイルを開く」ダイアログボックスが開きますので、図化するファイル(ここではVBAで地震波時刻歴のテキストデータを読み込んで図化用データをつくる!で使用した”地震波サンプル.txt”)を選ぶと、新しいワークブックが開き、つぎのように加速度時刻歴図が表示されます。

以上、最低限必要と思われるコマンド等を用いて図化してみました。

参考にしていただければうれしいです。

なお、Pythonで地震波時刻歴図を描いてみた!において、Pythonで同じ地震波時刻歴を作成していますので、興味のある方は是非ご覧ください。

コメント

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