すいません。
VB上にExcelで作成したグラフを表示させるには、どのコンポーネントを
利用すれば簡単にうまくいくんでしょうか。
すでにExcelの方ではグラフを作成してあり、名前も付けてあるので
あとはそのオブジェクトを取得できればいいだけにしてあるんですが、
ちょっと自分ではしらべても限界なのでどなたかおしえてもらえないでしょうか。
OSはWindows2000でOffice2002のExcelを使用してます。
VBは6.0です。
おねがいします。
クリップボードにコピーしてPictureBoxに貼り付けっていう方法が一番簡単ですよ。特別な処理、技術が必要なくてすぐにできると思います(^^
編集 削除コンポーネントの追加で、Office Web Componentsをチェックしておき、
フォームに Microsoft ChartSpace コントロールを貼っておく事で、
任意のグラフをフォームに表示させる事ができます……が、既にグラフが
用意されているなら、S.Sさんが書かれた様に、そのグラフを
クリップボードにコピーしておき、それをImageコントロール等に
貼った方が楽かと思いますよ。
# 手動ではなく、プログラムでコピーさせるなら、
# ChartObject.CopyPicture と Clipboard.GetData が使えるかも。
ありがとうございます。できました!!
ただ、、、一応動けばいいとおもったのですが、せっかくなのでもう一つ
ご教授ください。
稚拙なコードなので、恥ずかしい思いなのですが、それを覚悟で質問します。
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、、、とインデックス番号がつくものなんでしょうか。
いろいろすいません。自分でも勉強しますが、よろしくお願い致します。
簡単に書くのであれば十分かと思いますが、私なら初めからグラフを用意しておかないんじゃないかな?と思います。
これは各クライアント毎に定められたExcelファイルを配布されるのですよね?Excel側にデータを受け渡す部分はすでに作られていると思いますのでグラフからVB側で作成する方法はいかがでしょう?
こちらにサンプルがありますので参考にしてみてください(^^
http://www.bcap.co.jp/hanafusa/VBHLP/graph01.htm
あっ、あっ、ありがとうございます!!!
コメントもついててかなりわかりやすいですね。
しかもやりたいことの幅が広がりました。
ほんとに感激しました。
S.Sさんをはじめ、魔界の仮面弁士さん、ほんとうにありがとうございました。
がんばります。
これからもどんどんみんなのお助けマンになってください。
いつかぼくもそうなれるようがんばりたいとおもいます。
ありがとうございました。