[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.029 Excelのグラフをgifへ変換 .Exportメソッド使用

Excelのグラフをgifへ変換 .Exportメソッド使用

メルマガ発行内容

<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でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.028を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

情報を探す

情報を探すならGoogleかな?

↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・