(license)みなさん、こんにちは!タカハシ(@ntakahashi0505)です。エクセルVBAでPowerPointを操作する方法のシリーズを書いていたのですが、少しだけエクセルVBAでグラフを操作するという横道に逸れているところです。いっても、グラフを操作した上でPowerPointに貼り付けていきたいので、きっと役に立つと思います。今回はエクセルVBAでのグラフの取り扱いについてその超基本についてお伝えします。埋め込みグラフとグラフシートについて、またChartObjectとChartの違いなどについて解説をしています。tonari-it.com2016.10.07エクセルVBAでのグラフの取り扱いについての超基本についてお伝えしました。今回はいよいよグラフ自体を操作していきます。エクセルVBAでグラフのデータ範囲を指定する方法です。今回のお題ですが、前回と引き続きこちらのシートを使います。このシートですが、右上にグラフがポツンとありますよね。現在はシートの2行目、北海道の人口の推移を元データとしたグラフになっています。...といったように自動で一行ずつ移動させていきたいと思います。今回のプログラム、実行するとなかなか面白いですよ。グラフのデータ範囲を変更するプログラムグラフのデータ範囲を変更していくプログラムですが、このように組んでみました。グラフを操作する場合は、Chartを掴む必要があるので、それをしているのが7行目ですね。これでオブジェクト変数chtで目的のグラフを操作できるようにしています。以降の部分を以下解説していきます。SetSourceDataメソッドでグラフのデータ範囲を設定するグラフのデータ範囲を設定する場合は、Chartに対するSetSourceDataメソッドを使います。Rangeオブジェクトです。キーを押しながら、データ範囲(B15:U15)をマウスでドラッグします。VBAのSourceDataメソッドのRangeオブジェクトも、これと同じ選択範囲を指定してあげればOKです。Unionメソッドで複数のRangeオブジェクトをまとめるそれでVBAで複数の範囲を指定する場合、Unionメソッドを使います。書き方ですがUnion(Rangeオブジェクト1,Rangeオブジェクト2,...)このように複数の範囲をカンマ区切りで指定してあげればOKです。これで離れたセル範囲も同一のRangeオブジェクトとして取り扱うことができるようになります。ws.Range("C15:U15"))としてあげることで、グラフのデータ範囲を指定することができるわけです。見出し範囲データ範囲この二つの範囲をUnionでまとめたRangeオブジェクトを指定します。見出し範囲は常にB1:U2で固定で良いのですが、データ範囲はB2:U2、B3:U3、B4:U4、...と移動をしていきます。このような場合、データ範囲のRangeオブジェクトの指定はどうするのが良いでしょうか?ちょっとオシャレな方法としてRangeオブジェクトの参照範囲を移動させるOffsetプロパティを使う方法があります。OffsetプロパティはRangeオブジェクト.Offset(行方向の移動数,列方向の移動数)と書きます。これで、元のオブジェクトから参照範囲を指定した行数、列数だけ移動することができます。マイナスの値も指定できますし、移動の必要がないときは0を指定します。0)としていますから、最初の北海道の位置から、i-3行分を移動した範囲となります。iとi-3の数の推移をリストしてみるとi=3のときの移動行数:i-3=0i=4のときの移動行数:i-3=1i=5のときの移動行数:i-3=2...i=49のときの移動行数:i-3=46となります。沖縄県のグラフのときは、北海道の範囲から46行分移動した範囲となります。Refreshメソッドで表示を更新する16行目ですが、ここでRefreshメソッドを使ってデータ範囲を変更した後のグラフの表示を最新に更新しています。Chartオブジェクト.RefreshDoEventsを二回入れる理由グラフの描画をする際ですが、DoEventsを2個並べます。DoEventsはVBAからWindowsに制御を渡す命令です。ある程度の時間がかかる処理の場合、ループが終わるまで制御が独占されてしまい、例えば画面の再描画なども処理する余地を与えません。再描画しないとグラフの変化が見られないので、DoEventsを入れているというわけです。グラフの再描画の場合は、なぜかDoEventsが二つ必要ということです。実行結果では実行してみましょう!GIFアニメなので若干飛んでしまっていて恐縮なのですが、次々とグラフが変化していきますね。グラフの対象範囲を示す青い枠も一行ずつ移動しているのがわかると思います。まとめエクセルVBAでグラフのデータ範囲を指定する方法についてお伝えしました。グラフのデータ範囲はChartに対するSetSourceDataメソッドで設定することができます。その範囲の指定の際に、複数の範囲をひとつのRangeオブジェクトにまとめるUnionメソッド、Rangeオブジェクトの参照範囲を移動するOffsetプロパティなどが便利に使えました。次回ですがいよいよグラフをPowerPointに貼り付けていきたいと思います。簡単!エクセルVBAでシート上のグラフをコピーしてPowerPointにペーストするエクセルVBAでPowerPointを操作する方法についてお伝えしています。今回はエクセルVBAでエクセル上のグラフをコピーしてPowerPointにペーストをする方法です。tonari-it.com2016.10.17どうぞお楽しみに!連載目次:エクセルVBAでグラフとPowerPointを操作するエクセルで様々な集計や分析をした結果の表やグラフを、最終的にPowerPointに貼り付け...という作業は結構多いですよね。1つ2つなら良いですが、大量にあった場合は大変です。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。【エクセルVBA】Intersectメソッドで範囲内のセルが変更されたことをキャッチする方法エクセルのWorksheet.Changeイベントと、Intersectメソッドを組み合わせて、特定の範囲内にあるセルの値が変更されたときのみ、イベント内の処理を実行させる方法をご紹介しています。Intersectメソッドは、イベントと組み合わせる以外にも便利に使うことができますよ。2019.09.10Excel・VBA活用術エクセルVBAでPowerPointスライド上のシェイプ一覧を取得するエクセルVBAでPowerPointを操作する方法についてシリーズでお伝えしています。今回はPowerPointスライドのシェイプ一覧を取得する方法とShapeとShapesオブジェクトについてです。2016.09.04Excel・VBA活用術エクセルVBAでテーブルの見出し行・データ行・集計行の範囲の取得をする方法エクセルVBAで請求書作成マクロを題材としてテーブルを操作する方法をお伝えしています。今回は、VBAから見たテーブルの構造を確認すべく、テーブルの見出し行・データ行・集計行の範囲の取得をする方法をお伝えします。2018.07.31Excel・VBA活用術エクセル関数だけで営業日を考慮した月間スケジュールを作成する方法エクセル関数だけで営業日を考慮し、月間スケジュールを作成する方法をお伝えします。想定されるよくある日付パターンを、VBAを使用せずエクセル関数だけで計算。スケジュールリストを自動で作成します。今回はエクセルVBAでイミディエイトウィンドウを使う方法の超基本として、初心者のうちからぜひとも知っておいて欲しいDebug.Printの使い方です。一行に複数の出力をする方法も解説していますよ。Scriptのクラス」をテーマにシリーズでお伝えしております。今回はGASのクラスに最も簡単なプロパティを追加する方法です。thisキーワードの意味も解説します。PM篠原さまコメントありがとうございます。確かにおっしゃるとおり、offsetはメソッドではなくプロパティですね。修正をさせていただきました。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。