#635 グラフオブジェクトの内容をコピーするには? フォーム、VBA

これまでグラフを含む多くのフォームを作っていて、たとえば下図のようなデザインですべて統一されていたとします。

そして、何らかの理由でそれらすべてのグラフのデザイン(データ形式等を除く外観的なもの)を変更しなければならなくなったとします。

Accessのグラフオブジェクトの場合、Accessのプロパティシートではそのデザイン要素を直接変更することができません。Microsoft Graphのデザイナでひとつずつ変更する必要があります。しかも、軸の書式設定、データ系列の書式設定、プロットエリアの書式設定、グラフの種類など、多くの設定項目があり、さらにはそれぞれにパターンやフォント、表示形式、配置など多くの選択肢がありますので、1つくらいのフォームならよいですが、それが大量にあると非常に手間のかかる作業となってしまいます。



そのようなとき、非常に簡単な方法で、しかもプログラムのコード1行を実行するだけで、グラフの内容を変更することができます。
  1. それには、まずは変更後のグラフのデザインの詳細を整えたものをテンプレートとしてひとつだけ作って、任意の名前のフォームとして保存しておきます。ここでは仮にフォームの名前を「グラフオブジェクト2」、グラフのコントロールの名前を「テンプレートグラフ」とします。


  2. そして、そのフォームと、それに合わせて変更したい従来からあるグラフを含むフォームをデザインビューで開いておきます。ここではそのフォームを「グラフオブジェクト1」、グラフを「グラフ0」とします。


  3. そして、VBEのイミディエイトウィンドウに下記のコードを書き込みます。要はこれによって、配列として大量のデータを保持しているグラフコントロールの『OleData』プロパティの値を丸ごと代入することになります。

    Forms!グラフオブジェクト1!グラフ0.OleData = Forms!グラフオブジェクト2!テンプレートグラフ.OleData



  4. そしてEnterキーを押すことでそのコードを実行します。それによってグラフの外観が次のように変わります。


| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved