VBのフォーム上にEXCELのグラフを表示させるには?

解決


うぅ〜  2004-06-29 12:42:20  No: 84279  IP: [192.*.*.*]

すいません。

VB上にExcelで作成したグラフを表示させるには、どのコンポーネントを
利用すれば簡単にうまくいくんでしょうか。

すでにExcelの方ではグラフを作成してあり、名前も付けてあるので
あとはそのオブジェクトを取得できればいいだけにしてあるんですが、
ちょっと自分ではしらべても限界なのでどなたかおしえてもらえないでしょうか。

OSはWindows2000でOffice2002のExcelを使用してます。

VBは6.0です。

おねがいします。

編集 削除
S.S  2004-06-29 13:41:19  No: 84280  IP: [192.*.*.*]

クリップボードにコピーしてPictureBoxに貼り付けっていう方法が一番簡単ですよ。特別な処理、技術が必要なくてすぐにできると思います(^^

編集 削除
魔界の仮面弁士  2004-06-29 14:02:26  No: 84281  IP: [192.*.*.*]

コンポーネントの追加で、Office Web Componentsをチェックしておき、
フォームに Microsoft ChartSpace コントロールを貼っておく事で、
任意のグラフをフォームに表示させる事ができます……が、既にグラフが
用意されているなら、S.Sさんが書かれた様に、そのグラフを
クリップボードにコピーしておき、それをImageコントロール等に
貼った方が楽かと思いますよ。

# 手動ではなく、プログラムでコピーさせるなら、
# ChartObject.CopyPicture と Clipboard.GetData が使えるかも。

編集 削除
うぅ〜  2004-06-30 17:08:17  No: 84282  IP: [192.*.*.*]

ありがとうございます。できました!!

ただ、、、一応動けばいいとおもったのですが、せっかくなのでもう一つ
ご教授ください。

稚拙なコードなので、恥ずかしい思いなのですが、それを覚悟で質問します。
ExcelのグラフをVB側でコントロールするとき、このような書き方でいいので
しょうか。

普通はこう書くだろ、とか、このように書いたほうがいいです、などの
意見をお聞かせください。私は、一応グラフを取得できたというだけなのですが、
このように記述しました。

Private Sub Command1_Click()
    Dim appXLS As Object
    Set appXLS = CreateObject("excel.Application")
    appXLS.Application.Workbooks.Open ("C:\book1.xls")
    appXLS.Worksheets("sheet1").ChartObjects("グラフ 1").Copy
    
    Image1.Picture = Clipboard.GetData()
    Picture1.Picture = Clipboard.GetData()
'    appXLS.Workbooks(1).Close savechange:=False
    appXLS.Quit
    Set appXLS = Nothing
End Sub

ただ、Excelをバックグラウンドで起動したかったので、コード側で閉じると
保存しますかと聞かれます。参考書等で書かれていたコードを引用したのですが
どうもうまくいきません。その行はコメントブロックにしてあります。

あと複数のグラフオブジェクトはクリップボードにコピーした順番に
0,1,2、、、とインデックス番号がつくものなんでしょうか。

いろいろすいません。自分でも勉強しますが、よろしくお願い致します。

編集 削除
S.S  2004-06-30 17:26:13  No: 84283  IP: [192.*.*.*]

簡単に書くのであれば十分かと思いますが、私なら初めからグラフを用意しておかないんじゃないかな?と思います。
これは各クライアント毎に定められたExcelファイルを配布されるのですよね?Excel側にデータを受け渡す部分はすでに作られていると思いますのでグラフからVB側で作成する方法はいかがでしょう?
こちらにサンプルがありますので参考にしてみてください(^^
http://www.bcap.co.jp/hanafusa/VBHLP/graph01.htm

編集 削除
うぅ〜  2004-06-30 19:24:08  No: 84284  IP: [192.*.*.*]

あっ、あっ、ありがとうございます!!!

コメントもついててかなりわかりやすいですね。

しかもやりたいことの幅が広がりました。

ほんとに感激しました。

S.Sさんをはじめ、魔界の仮面弁士さん、ほんとうにありがとうございました。
がんばります。

これからもどんどんみんなのお助けマンになってください。
いつかぼくもそうなれるようがんばりたいとおもいます。

ありがとうございました。

編集 削除