• ベストアンサー

できると言っちゃったばっかりに、、

 あの、、、VBでグラフを書きますよね。それでソレをVBで表示したいんです。JPGとかイメージファイルで保存とかして何とかできませんかねー、、。表はできるのにグラフができないわけがない、なんて言ったら「お願いね」って言われちゃった、、。誰か教えてくださーい。宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.9

ピクチャボックスに表示されてるのですね? もう保存するだけなのですね? でしたら・・・参考URLをどうぞ。 SavePictureで保存できます。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=168028

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=168028
HUKAHIRE
質問者

お礼

 やっとこさ、やっとこさ完成しました。今日中に完成させて早くあがりマース。本当にありがとうございました。

その他の回答 (8)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.8

クリップボード経由だとかなりしんどい思いをすると思います。 たしかAPIのCreateBitmapを使用するとできたと思ったのですが、その関数を使用するまでの手続きが面倒だった気がします。 ところでクリップボードを使用してるということは、グラフが描画されるまでを画面に表示してるのですか?チラチラした画面でやってるのですか? それとも、画面を制御してますか? もし画面に表示をしながらデータの更新&グラフの反映を行っているのであれば、それをクリップボードにコピーするのではなく、それをキャプチャしてピクチャボックスに描画&保存と言う手もありますが、それではだめですか? 個人的な意見かも知れませんが、クリップボード経由の処理はお勧めしません。

HUKAHIRE
質問者

お礼

 夜中遅くにスミマセン、、。なんとお礼をしたらいいのか、、。

HUKAHIRE
質問者

補足

 んー、あまり良く意味が分からなかったんですが私の説明下手が影響しているのは分かった気がする、、。スミマセン、もう1度説明させて下さい。まず、細かい設定がされているグラフが保存されているExcelのファイルがあります。そこの決まった部分にデータをVBで送り込みます。データが反映されたグラフをコピーしてきてImage(Picture Box)などに貼り付けて表示しているのが今の状態なんですが、反映されたグラフを保存したいんです。JPEGかGIFかBITMAPで保存したいんです。何度も何度も本当にありがとうございます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.7

サンプルです。 方法としてはOLEを使用します。 ツールボックスに「OLE」と書いたアイコンがありますよね。 あれを使用してOLEをフォームの中に作成してください。マウスでOLEを作成しようとすると、オブジェクトの種類をたずねてきますが、キャンセルしてしていいです。 それでオブジェクト種類が定まってないOLEが作成されました。その領域にEXCELが埋め込まれます。 ※※注意※※ エクセルにデータを落としてますよね?   xlApp.Workbooks(1).Sheets(1).Cells(1,1).Value = "データ" って感じですよね?それで、そのエクセルブックを保存する前に   xlApp.Charts(1).Activate という感じで、グラフのシートを選択した状態にしてから保存してください。 creBitMap関数は、以前の書き込みを参考にしてください。 Option Explicit 'ブック名を宣言してますが、任意に変更してください Private Const EX_BOOK_NAME = "C:\Test.xls" 'これはエクセル2000であることを示します。「8」という数字の部分はバージョンによって違います。 'EXCELのバージョンがわからないので、そちらで変更してください。わからなかったらレスください。 Private Const EX_CLASS_NAME = "Excel.Sheet.8" 'OLEに埋め込む Private Sub Command1_Click()   With Me.OLE1     'ファイルを埋め込みます     .CreateEmbed EX_BOOK_NAME, EX_CLASS_NAME          'OLE更新     .Refresh   End With End Sub 'ファイルとして保存 Private Sub Command2_Click()   Call creBitMap(Me.OLE1, "c:\test.bmp") End Sub Private Sub Form_Load()   With Me     'スケールをピクセルにする     .ScaleMode = vbPixels          '埋め込まれるEXCELは、OELのサイズによって自動調整を行う     .OLE1.SizeMode = vbOLESizeStretch   End With End Sub

HUKAHIRE
質問者

お礼

ありがとう、この上ないです。

HUKAHIRE
質問者

補足

 大変大変大変お世話になっています。教えていただいたものを悪戦苦闘して自分なりに解釈して試していたのですが、クリップボードにコピーするところまで出来上がったんですけど、ソレをJPEG、GIF、BMPかなにかに保存したいんです。未だに実現できないんです。いつまでかかってるんだーなんてことまで言われちゃうし、、。単純にOLEなどを通さずに実現ってできるものですか??お忙しいところ申し訳ないんですけど宜しくお願いします。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.6

ごめんなさい。勘違いしてました。 さっきのサンプルは、グラフを書いた後、あるいはチャートコントロールやOLEオブジェクトとしてエクセルを使用した後にビットマップファイルにするサンプルです。 グラフにする部分も必要なのですね。 ちょっと今日は用事(麻雀)があるので、また明日以降。。。 グラフ描画のお奨めは 1番:市販のコントロール(マニュアルが付いていて便利。出費がかさむ) 2番:フォームやピクチャボックスに直描画(座標取りがめんどい) 3番:チャートコントロール(わりと使いやすいが、グラフがしょぼい) 4番:エクセルの差込(わかり易くて、メンテしやすい。エクセルまかせの部分が多いので、グラフサイズがなかなか定まらない。) でもEXCELが入ってる事を限定してもよいのなら、バリエーション豊かなエクセル差込がいいかも?それができたら、2番以外は全てできるようになりそうな気がします。。。 グラフにしたいデータの項目名(仮名称でもいいです) サンプルデータ を教えてもらえたら、わかりやすいサンプルができるかも?

HUKAHIRE
質問者

お礼

 細かい気づかい大変感謝します。もうすこし甘えさせて下さい。

HUKAHIRE
質問者

補足

 えっと、なにから説明していいのか分かりませんが、、説明下手を許して下さいね。まず、VBフォームでなんかボタンを押すとテキストボックスに入っているデータをExcelを開き渡します。あ、その前にグラフっていろいろプロパティがあるじゃないですか。だから既にExcelファイルが存在している状態です。だからデータをExcelに渡すと既存のファイルが勝手にグラフにデータを反映してくれますよね、、。ココまではできたんですよ。こっからが問題でそしたら、そのできあがったグラフをVBに表示したいんですよ。宜しくお願いしますー。ところで昨日の麻雀はどうでしたか??

  • denden_kei
  • ベストアンサー率23% (542/2278)
回答No.5

VBを使って全自動(?)で、というのでなくてよいのでしたら、餅は餅屋、ということで、グラフソフトに書かせる、というのはどうでしょうか? VBで出てきた計算結果をデータファイル(csvファイル的な形式がいいでしょう)としてセーブして、例えばSma4Winに読み込ませれば体裁もいろいろ調整できます。sma4winはメタファイルでの書き出しもできたはずです。 hukahireさんの用途には合わないかもしれませんが、以前やったことがあるので、ご参考までに。

HUKAHIRE
質問者

お礼

 グラフソフトというと¥が、、。なにしろ$なしで、、。何が1番良いのかわかりませんよ。ホント、パソコンっていろいろできますよね。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

OLEオブジェクトなら以下のソースで大丈夫だと思います。 あらかじめデザイン時に、フォームのScaleModeをピクセルにしてください。 あとはcreBitMap関数を呼ぶだけで可能なはずです。 欠点としては、実行時にオブジェクトの上に何らかのフォームやウィンドウが前面にあったりすると、それもファイルイメージに取り込まれます。 それを回避する方法もありますが、以前に作成したサンプルがどこかに消えちゃいました。。。 結構大変な処理だった記憶がありますので勘弁してください。。。 Option Explicit Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Private Sub Command1_Click()   'ファイルにしたいオブジェクトと、ファイルパスを指定   Call creBitMap(Me.OLE1, "c:\test.bmp") End Sub Private Sub creBitMap(inObj As Object, inFilePath As String)   Dim picWork As PictureBox      Dim lngL As Long, lngT As Long, lngW As Long, lngH As Long      'オブジェクトの左位置/上位置/幅/高さ を取得   With inObj     lngL = .Left: lngT = .Top: lngW = .Width: lngH = .Height   End With      'ピクチャボックスを作成   Set picWork = Controls.Add("VB.PictureBox", "picDmy")   'ピクチャボックスの初期設定   With picWork     .Appearance = 0     .AutoRedraw = True     .AutoSize = False     .BorderStyle = 0     .ScaleMode = vbPixels     .Width = lngW     .Height = lngH   End With      With picWork          '描画実行     Call StretchBlt(.hdc, 0, 0, lngW, lngH, Me.hdc, lngL, lngT, lngW, lngH, vbSrcCopy)          '画像の保存     Call SavePicture(.Image, inFilePath)   End With      'ピクチャボックスの破棄   Controls.Remove picWork End Sub

  • cse_ri
  • ベストアンサー率29% (74/253)
回答No.3

そうですね、手段はいろいろありますがExcelとかMS-GraphをOLEで VBのウィンドウに貼り付けて表示させる方法が応用範囲が広そうですね。 詳しいプログラミングについては、書籍等を読んで勉強してください。 できる・できないの話で言えば、間違いなくできます。 どう実現させるかは、プログラマの腕によりますが。

HUKAHIRE
質問者

お礼

 プログラマですか、、。重く圧し掛かりますね、、。 なにやら覚えることが多くて、、。頑張ります、ありがとうございます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

オブジェクトということはOLEオブジェクトですか? そのOLEオブジェクトの現在のハードコピーを、ファイルに落としたいのですよね?

HUKAHIRE
質問者

お礼

 私が定時にあがってボ-ッとしている間にスミマセン。訳もわからずにオブジェクトなんていう言葉を使ってしまいました。実現方法がわからないのです。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

グラフは、どのように書いたのですか? CHARTコントロール? EXCELの差込? ピクチャボックス? フォームに直に?

HUKAHIRE
質問者

補足

ありがとうございます。オブジェクト?としてです。EXCELを開いて、、、。質問しているほうがこんなんじゃ答えられませんよね。多分、EXCELへの差込だと思います。

関連するQ&A

  • VBでエクセルのグラフを表示したい

    VB6.0とエクセル2003を使っているのですがまずVBから値を取得してエクセルでグラフを作りそのグラフをまたVBに表示したいのですが一回画像ファイルにしてオブジェクトのイメージで表示するしかないのでしょうか?そうであればエクセルのグラフを画像ファイるに直す方法も教えてください。

  • ピクチャーボックスやイメージに表示せずに画像を保存する方法を教えて下さい。

    開発環境はVB6.0です。 説明べたなので箇条書きで記入しました。 (1)ボタンを押す (2)Dドライブの中にあるJPGファイル(複数)をZドライブにコピー(もしくは移動) コピーでも移動でもどちらでもかまいませんが、なんせ異なったドライブにJPGファイルを写す方法を探しています。 VB上に画像を表示して保存する方法はわかりましたが、   Call SavePicture(Image1, "z:\meibo\a\1.jpg") これでは一気に保存することが出来ないのでとても困っています。 どなたか教えて下さい。よろしくお願いします。

  • pictureboxに表示した画像のファイル名を取得したい。

    PictureBox1.image=image.fromfile("c:\a.jpg") のように画像を表示したピクチャーボックスの ファイル名c:\a.jpgを取得するには どのように書いたら良いでしょうか。 VB.NETでございます。m(__)m

  • 保存済みの画像ファイルが表示されない?

    ネットから保存したjpgの画像ファイルが表示されません。 解決方法のわかる方が、いらっしゃいましたら教えて頂きたいと思います。 (デルのサポートページを見てみましたが対処方法が載っていませんでした) 詳細 画像上で名前を付けて保存を選び、保存先の選択画面で フォルダを選択した時、保存先のフォルダ内に有るはずの jpgファイルが表示されません。 又、フォトショップなどで画像を開く際もファイルが表示されません。 ※Cドライブ→そのファイルにアクセスした場合は  jpgファイルが有りプレビューも出来ます。 OS  WindowsXP 機種  デルDimension 8250 です。 気になる点 以前使っていたWindows98で保存したjpgファイルを MOを使って移動しました。 このファイルの種類を見ると Dell Image Expert イメージとなっています。 この辺が関係あるのでしょうか? ※名前を付けて保存する際、上記のファイルは  保存先フォルダに表示されています。 どうか宜しくお願いします。

  • またまたグラフ、、

     前回大変お世話になった(特にTAGOSAKU7さん)HUKAHIREです。提出期限にはギリギリ間に合ったのですが、修正がかかってしまいました。ExcelからグラフをコピーしてFormに貼り付けてソレをbmpファイルに保存するという作業でしたが、Formなどを通せないそうなんです。なのでExcelからコピーをして直接(他の何かを通して?)ソレをなんとかbmpファイルなどに保存できないでしょうか?もう調べられる手が尽きました、、、(早すぎ??)どうか今回もどうぞ宜しくお願いします。

  • エクセルの表の一部をHPにUPしたい。

    エクセルで作った表とグラフがあるんですが、その一部だけをHPにUPして表示させたいと思っています。ファイルをhtmlで保存すると、全体が表示されてしまいますが、一部だけをhtmlにしたいのですが、いい方法はありませんか?

  • Excelのチャート(グラフ)

    Excelのグラフを画像ファイル(.jpgか.gif)で保存したいのですが、可能でしょうか?

  • ピクチャボックスに描画した画像の保存

    VB6.0にて、 http://www.uploda.org/uporg898462.jpg このようなものを作成しました。 折れ線グラフはプログラムにて後から描画したもの、 それ以外の目盛りなどは最初からピクチャボックスに描画してあるものです。 pic1,pic2は共にピクチャボックスです。 赤い線で囲まれたpic1を目盛り、グラフ、その他のテキストボックスや文字と共に画像として保存したいのですが、 SavePicture Pic1.Image, "C:\SaveTest2.bmp" とすると、pic1の大きさの、何も描画されていない真っ白な画像が保存されてしまいます。 また、SavePicture Pic2.Image, "C:\SaveTest2.bmp" (pic2の保存) とすると、折れ線グラフのみが描画され、目盛りは無くなった画像が保存されてしまいます。 2つのピクチャ共にAutoRedraw=Trueを設定しています。 pic1を上手く保存する方法は無いでしょうか? ご教授、お願いします。

  • DreamWeaverでテンプレートの設定について

    ドリームウェーバ でテンプレートを保存すると、 Templates フォルダに 自動的に保存されます。 今、 index.html と イメージフォルダ と テンプレートフォルダ が同階層にあります。 テンプレートファイルからみると、イメージの位置は、 「 /images/****.jpg 」 のような形になります。 index.html からみると、イメージの位置は、 「 images/****.jpg 」 となります。 そこで質問ですが、 DWの デザイン画面では ちゃんと イメージがすべて表示されているのに、 ブラウザで表示したとき、 テンプレートで読み込むはずのイメージが表示されません。 どうすれば、表示されるのか教えてください。

    • ベストアンサー
    • HTML
  • グラフをJPGファイルにする方法

    Excelで作成したグラフ(エリア)をJPGファイルとして保存する方法を教えて下さい。

専門家に質問してみよう