この記事では、
【グラフの参照データを更新⇒グラフを画像として出力】
という一連の流れを繰り返し行うVBAコードをご紹介しています。
時系列で変化するデータに対して、この処理を行いパラパラ漫画のようにすることで、時間の経過によってデータがどのように変化していっているのかがわかりやすくなるはずです。
この記事では、時系列データを変化させることが目的ではなく、あくまでも【グラフの参照データを更新⇒グラフを画像として出力】という流れを繰り返し行うことが目的としています。
そのため、今回は簡素化して以下のようにグラフ上のサインカーブがニョロニョロ動いていくようなパラパラ漫画を作成してみようと思います。
※この記事で紹介する内容は、パラパラ漫画の基画像を作成するところまでです。
そこからアニメーション化するには別の処理が必要です。
アニメーション化の方法に関しては記事の最後にやり方をご紹介しています。
あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。
それでは早速やっていきます!
サインカーブのグラフを作成
まずはグラフがなければ始まりませんので、まずはグラフを作成します。
今回は以下のようにA列に角度、B列にSIN、C列にSINカーブの位相をとってグラフを作成しました。
このグラフはC2セルの位相の部分を変更することで、以下の画像のようにサインカーブがすこし動くように作られています。
つまり、
C2セルの値を更新⇒グラフを画像として出力
という作業を繰り返し行うことで、冒頭にご紹介したような動画のもとになる画像達を作成することができるというわけです。
グラフの名前を確認しておく
エクセル上のグラフにはそれぞれ名前が付けられています。
その名前は以下の画像の赤枠部分で確認することが出来ます。
※今回はgraph1という名前を付けていますが、ここはあなたの好きなように変更してもOKです。
※私と違う名前のグラフにした場合は、以降で紹介するコード中の”graph1″という部分を変更した名前に適宜変更してください。
画像の出力場所を指定する
次は画像を出力する場所を指定しておきましょう。
今回は以下の画像のようにF1セルに画像の出力場所を記入しました。
※以降で紹介するVBAコードでもこのセルを参照するように記述しています。
グラフデータ更新⇒画像出力を繰り返すVBAコード
下準備はこのくらいにして、いよいよVBAコードを記述していきます。
◆データ更新⇒画像出力を繰り返すVBAコード
Sub make_pic_from_graph()
'変数の型を宣言
Dim output_folder As String
Dim pic_name As String
'画像を出力する場所
output_folder = Cells(1, 6)
'出力する画像の名前、拡張子
pic_name = "output"
kakuchoshi = ".jpg"
'データ更新⇒画像出力を繰り返す
For i = 0 To 360 Step 30
Cells(2, 3) = i
ActiveSheet.ChartObjects("graph1").Chart.Export _
output_folder & "\" & pic_name & Format(i, "000") & kakuchoshi
Next
End Sub
このコード中のChart.Exportという部分がグラフを画像として出力している部分です。
その直前にC2セルを変更することでグラフを書き換えています。
これらを繰り返すことで、グラフをパラパラ漫画のように出力できるわけです。
念のためのこのコードを実行してみましょう。
画像の出力先に指定したフォルダの中身はこのようになっていました。
しっかりとグラフの曲線が少しづつ変化しながら画像が並んでいますね。
あとはこの画像達をエクセルに並べたり、gif動画にしたりすればパラパラ漫画の完成です。
やり方がわからないという方は以下の記事を参考にしてみてください。
【VBA】指定したフォルダ内の画像をエクセルに大量貼り付け!
【python】複数画像からパラパラ漫画(gifアニメ)を作成する方法!
「こんなの面倒だ!」という方は、
【gifアニメ 作成 ソフト】なんかで検索⇒専用ソフトをダウンロード⇒動画化しましょう。
正直これが一番楽です。
終わりに
というわけで今回はグラフデータ更新⇒画像出力を繰り返してパラパラ漫画の基画像を作成する方法をご紹介しました。
「時系列での変化を説明するにはアニメーションがあったほうがわかりやすいな。」
こんな場面で活躍するはずですので、ぜひやり方をマスターしておきましょう。
このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
・日々の残業時間を減らしたい。
・業務をもっと効率的にこなしたい。
・もっと勉強する時間を作りたい。
こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。
この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント