<Excelのグラフをgifへ変換 .Exportメソッド使用>
こんにちは、三流プログラマーKen3です。 今回は、 Excelのグラフをgifへ変換 して遊んでみます。 /* * 1. ActiveChart.Export ("C:\samp.gif") */ 昔か書いてたメルマガに、 Excelのグラフをgifへ変換 があったので、今回は、これをネタに話を大きくしてみます。 *昔のメルマガも整理しないとなぁ Excel97 で、グラフが表示されています。 このグラフを画像ファイルとして保存したいのですが、 どのような操作をすれば、よいのですか? *Excelで作成したグラフをHPに載せたいので、 AAA.GIFにしたいのです。 .Exportってメソッドあるので、VBAからは、 ActiveChart.Export ("C:\samp.gif") みたいな感じで、GIFファイル作成できるみたいです。 VBAでグラフをGIFにした、 サンプルを載せます。 Sub test028_1() 'ブックを新規に作成 Workbooks.Add '適当なデータをセット Range("A2").Value = "東京" Randomize '乱数初期化 Range("A2").Value = "東京": Range("B2").Value = Int(Rnd * 100 + 1) Range("A3").Value = "神奈川": Range("B3").Value = Int(Rnd * 100 + 1) Range("A4").Value = "埼玉": Range("B4").Value = Int(Rnd * 100 + 1) Range("A5").Value = "千葉": Range("B5").Value = Int(Rnd * 100 + 1) 'グラフを追加、、マクロ記録で作成したコードをコピー Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A2:B5") ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" 'ブックと同じ位置に 'グラフをGIFファイルで保存 ActiveChart.Export (ThisWorkbook.Path & "\test028.gif") '↑VBAでGIFに保存できるので、それなりに使えるかも End Sub '---- ポイントは、 Chartオブジェクトのメソッド .Export メソッド で、 ブックと同じフォルダーに保存したかったので、 ActiveChart.Export (ThisWorkbook.Path & "\test028.gif") と指定しました。 /* * 2.表示されているグラフを保存するボタンを作成 */ 上のサンプルでは、 新規にグラフを作成して、GIFにしたけど、 実際の業務では、グラフは既にあって(元は事前に作ってあって)、 データを入力する状態になってると思います。 Print Screen KEYを押して、 グラフィック編集ソフトで切り取り や Shiftキーを押しながらメニューの編集・図のコピー をやらなくてすむように、 表示されているグラフをGIF保存するマクロを作ってみます。 まず、問題なのが、 Chartオブジェクトの数や指定する方法かなぁ。 Sheetオブジェクトの中にChartObjectsがあって 何? えっと、埋めこみグラフってのは、シートの下にぶら下がってるんですよ。 なので、指定する時は、 ActiveSheet.ChartObjectsとやります。 へぇ〜そうなんだぁ。 サンプルのtest028-book.xlsファイルを http://www.ken3.org/vba/lzh/vba028.lzh に圧縮したので、解凍してみながらのほうがわかりやすいかも。 ア.グラフの数を数える サンプルでは、横棒グラフと円グラフを用意してます。 シートにグラフがいくつ埋めこまれているか調べるには、 .Countプロパティを参照します。 ActiveSheet.ChartObjects.Count イ.個々のグラフ情報にアクセスするには? 個々のグラフの情報にアクセスするには、 ActiveSheet.ChartObjects(1) と ActiveSheet.ChartObjects("グラフの名前") の2つのやり方があります。 アのグラフの数を数えるプロパティを参照して、 ループで回すことができます。 Sub test028_2() Dim n As Integer 'n番目のカウンターで使用 Dim strFNAME As String 'ファイル名 'グラフの枚数分処理を行う For n = 1 To ActiveSheet.ChartObjects.Count 'ファイル名を作る strFNAME = ThisWorkbook.Path & "\test028-" & n & ".gif" '.Exportでgif出力 ActiveSheet.ChartObjects(n).Activate ActiveChart.Export (strFNAME) '保存確認メッセージを表示 MsgBox ActiveSheet.ChartObjects(n).Name & "を" & strFNAME & "へ保存しました" Next n End Sub '--- For n = 1 To ActiveSheet.ChartObjects.Count で、グラフの枚数分ループを行います ファイル名をtest028-1 -2 と連番で作ります strFNAME = ThisWorkbook.Path & "\test028-" & n & ".gif" グラフを選択、出力します ActiveSheet.ChartObjects(n).Activate で選択 ActiveChart.Export (strFNAME) で出力 おまけで、確認メッセージを表示します。 MsgBox ActiveSheet.ChartObjects(n).Name & "を" & strFNAME & "へ保存しました" /* * 3.終わりの挨拶 */ 今回は、 ・Excelのグラフをgifへ変換 でした。 予定では、 HTMLファイルの作成、FTPを起動して、自動でサーバーにUPする も含めたかったけど、気合が足りなく、今回は無しで。 少しがんばれば、下記のような処理も可能ですね。 ボタンが押されたら、 Excelのシートを 自分で(VBAで) HTMLファイル化して(グラフもGIF画像にして、) FTPを使用して自動的にサーバーもっていく。 今回のサンプルは、 http://www.ken3.org/vba/lzh/vba028.lzh に保存してあります。 解凍してtest028-book.xlsを開いて、 内容を変えたりして、遊んでください。 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。
|
あとは、項目別にMSでお勉強かな? ◆ マイクロソフト サイトの歩き方 ◇ How-To インデックス ◇ FAQ インデックス ◇ スキルレベル別おすすめコンテンツ ◇ テクノロジ マップ ◇ テーマ別技術資料一覧 |
| ※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。 お奨め本の目次を見るだけでも勉強になったり |