OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

またまたグラフ、、

  • すぐに回答を!
  • 質問No.179006
  • 閲覧数59
  • ありがとう数7
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 68% (77/113)

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

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

  • 回答No.6
レベル12

ベストアンサー率 65% (276/422)

解決したのでしょうか?
お礼コメント
HUKAHIRE

お礼率 68% (77/113)

かなり返事が遅れてスミマセン。実はネコが病気にかかってしまい、ほっぽり出してしまってました。でもでも私なりに処理が早くなったなー、と感じたのでそれを提出しました。確認して返却される予定の日から私は家を離れなくなったので回答はまだもらってないんですが、多分大丈夫だと思います。TAGOSAKU7さんも忙しそうなので、体にだけは気を付けて下さいね。ありがとうございました。でもチョット回答が不安なんので質問はもう少し継続させておいて下さい。
投稿日時 - 2001-12-14 10:13:42
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル12

ベストアンサー率 65% (276/422)

どうも、TAGOSAKU7です。 ピクチャボックスも通してはダメなのですか? 出題者は『コピー&ペーストで取り込んだ画像はダメ』と言ったわけではないのですか? それとも、『メモリ上に存在する「絵」をビットマップとして作成』という限定仕様なのですか? 情報をください 1.エクセルのバージョン 2.グラフはワークシートに、グラフオブジェクトとして存在?それとも、ひとつのグラフシ ...続きを読む
どうも、TAGOSAKU7です。

ピクチャボックスも通してはダメなのですか?

出題者は『コピー&ペーストで取り込んだ画像はダメ』と言ったわけではないのですか?

それとも、『メモリ上に存在する「絵」をビットマップとして作成』という限定仕様なのですか?


情報をください
1.エクセルのバージョン
2.グラフはワークシートに、グラフオブジェクトとして存在?それとも、ひとつのグラフシートとして存在?
3.グラフを作成するときデータをエクセルに書き出しますよね?そのときは非表示?もし非表示なら、表示しても可ですか?


現在長期出張中で、VB環境が無いためにほとんどレスが書けない状況です。
調べてみないとすぐには僕もできません。それに今はC言語環境しかないのです。2日後以降であればVB環境を入手できます。期限に間に合いますか?
補足コメント
HUKAHIRE

お礼率 68% (77/113)

 まずExcelは2000です。で、グラフはグラフオブジェクトとして存在(んー、理解の不一致がなければいいんけど、、。)グラフ1とかいう感じでデータを書き込んだシートと同じところに存在しています。でもシート(?シートの下についているタグのように)として存在するぶんには構いません。あくまでExcelシートは影の存在なので、どんな状態でも可です。でも表示するのは不可なんです。裏で全てを処理して保存したいのです。出張中というのに回答していただいてありがたい限りです。どこに出張してるんですか?
投稿日時 - 2001-12-04 17:50:10
お礼コメント
HUKAHIRE

お礼率 68% (77/113)

ご反応に大変、感謝感激です。
投稿日時 - 2001-12-04 17:50:02
  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

以前はエクセルからフォームにグラフを取り込んだんですよね? どうやって取り込んだのですか? もしかして流用してその部分が使えるかもしれないので、できたらその部分を見せてもらえるとうれしいです。 ...続きを読む
以前はエクセルからフォームにグラフを取り込んだんですよね?

どうやって取り込んだのですか?

もしかして流用してその部分が使えるかもしれないので、できたらその部分を見せてもらえるとうれしいです。
お礼コメント
HUKAHIRE

お礼率 68% (77/113)

 私が確認する前に回答を何度も頂いて失礼極まりないですね、、。気を付けます。今から試してみます。
投稿日時 - 2001-12-05 16:11:35
  • 回答No.3
レベル12

ベストアンサー率 65% (276/422)

まず最初に http://oshiete1.goo.ne.jp/kotaeru.php3?q=154890 で発言したARCさんに感謝です。VB環境を臨時で入手できました。 #2の発言はまだ見てないようですが・・・ とりあえず処理が見えなければOKかな?っと勝手に思って、クリップボードを使用してます。(クリップボード使用は不本意) 処理の流れの詳細としては、まず・・・ エク ...続きを読む
まず最初に
http://oshiete1.goo.ne.jp/kotaeru.php3?q=154890
で発言したARCさんに感謝です。VB環境を臨時で入手できました。

#2の発言はまだ見てないようですが・・・

とりあえず処理が見えなければOKかな?っと勝手に思って、クリップボードを使用してます。(クリップボード使用は不本意)


処理の流れの詳細としては、まず・・・

エクセルにデータを出力(勝手にグラフに反映)
エクセルの保存
・・・で次のような処理を行ってください。
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
要するに、グラフオブジェクトをクリップボードにコピーする処理です。
そして、エクセルを閉じてください。(閉じるときの保存不要)

ここからが本題で、
ダミーのピクチャボックスに画像を読み込む
保存する
以上です。


もしこれ以外の方法であれば、かなり実験/検証が必要です。
CreateFile関数でBitMapファイルそのものを作成していかなければなりません。かなりのチカラ作業となります。BITMAPのヘッダやパレットを直接指定して、幅*高の分だけの各ドットを、手作業でセットする処理になると思います。
もし締め切りが近いのであれば、とりあえず下記のコードを参考に作成して、それでもダメならば先生からヒントを得てください。大学のVBの課題で、そこまでの要求をする先生はあまりいないと思います。Cでグラフィック大好き先生ならわかりませんが・・・

ピクチャボックスもダメなときのために、一応参考URLを載せておきます。
http://www.alpha-net.ne.jp/users2/ei9711/oldkouza/vbkouza.html



Option Explicit

Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
Private Const CF_METAFILEPICT = 3


Private Sub Command1_Click()
  'ファイルパスを指定して保存する
  Call SavePic_FROM_Clipbord("c:\test.bmp")
End Sub

Private Sub Form_Load()
  'ダミーピクチャボックスの書式設定
  With Me.Picture1
    .Appearance = 0
    .AutoRedraw = True
    .AutoSize = True
    .BorderStyle = 0
    .Visible = False
  End With
End Sub

'クリップボードからの画像の取り込み&保存
Private Sub SavePic_FROM_Clipbord(inPictureFilePath As String)
  '画像形式であることをチェック
  If IsClipboardFormatAvailable(CF_METAFILEPICT) = 0 Then
    MsgBox "画像を取り込めません"
    GoTo PGMEND
  End If
  
  With Me.Picture1
    '画像の取り込み
    Set .Picture = Clipboard.GetData()
    
    '画像の保存
    Call SavePicture(.Image, inPictureFilePath)
  End With
PGMEND:
End Sub
お礼コメント
HUKAHIRE

お礼率 68% (77/113)

私が確認する前に回答を何度も頂いて失礼極まりないですね、、。気を付けます。今から試してみます。
投稿日時 - 2001-12-05 16:14:38
  • 回答No.4
レベル12

ベストアンサー率 65% (276/422)

>回答を何度も頂いて失礼極まりないですね、、。気を付けます。 (・_・三・_・) ウウン そんなことはありません。 チャットではないので、タイミングが合わなければよくあることです。 がんばってくださいな。 ...続きを読む
>回答を何度も頂いて失礼極まりないですね、、。気を付けます。
(・_・三・_・) ウウン
そんなことはありません。
チャットではないので、タイミングが合わなければよくあることです。

がんばってくださいな。
補足コメント
HUKAHIRE

お礼率 68% (77/113)

 完成品を見せたら「もうチョット早いといいなッ」って返されました。もう、どこまで私に求めるのって感じなんです。しかも期限は明日までなんて、、。私もまた求めてしまいますけど、高速化という点について分かりますか?DBに接続しているんでADOを使っています。そこがやっぱりタイムログ(使い方は合ってる?)なんだと思うんですよね、、。
投稿日時 - 2001-12-06 15:22:35
お礼コメント
HUKAHIRE

お礼率 68% (77/113)

 ありがとうございます。実現できました!でも、、、
投稿日時 - 2001-12-06 15:22:27
  • 回答No.5
レベル12

ベストアンサー率 65% (276/422)

ADOの部分で時間がかかるということですか? コードを見てみないと、どこが無駄かがわかりませんが、、、 想像の中を逸しませんが、一番負荷がかかる部分はエクセルの起動と、データの出力部分ではないでしょうか? 1.エクセルの起動に関して #3の発言において、 >そして、エクセルを閉じてください。(閉じるときの保存不要) とありますが、閉じなくてもOKです。あらかじめプログラム起動時に ...続きを読む
ADOの部分で時間がかかるということですか?

コードを見てみないと、どこが無駄かがわかりませんが、、、

想像の中を逸しませんが、一番負荷がかかる部分はエクセルの起動と、データの出力部分ではないでしょうか?

1.エクセルの起動に関して
#3の発言において、
>そして、エクセルを閉じてください。(閉じるときの保存不要)
とありますが、閉じなくてもOKです。あらかじめプログラム起動時にエクセルを裏で起動しておき、プログラム終了時に閉じると、実行中の負荷を多少おさえることができると思います。[グラフを描画]のタイミングでエクセル起動/終了を繰り返すと、その分だけ遅くなります。



2.データの出力部分
データを
Cells(1,1).Value=1
Cells(1,2).Value=2
とエクセルに各値セットしているのであれば、改善しましょう。

まず宣言
Dim 配列変数() as String
Dim lngDataCnt as Long

データ件数を取得
lngDataCnt = データのカウント
配列の大きさをセットして再宣言
Redim 配列変数(lngDataCnt,データのフィールド数) as String

ループでまわすなどして、配列変数にデータをセット
配列変数(i,j)="各データ値"

セルに出力範囲を指定して出力
Range(Cells(1,1),Cells(1,2)).Value=配列変数

といったように、出力は一度で済ませましょう。



あとまったく未検証なのですが・・・
Dim exlApp as Excel.Application
と言う感じで、エクセルアプリケーションを操作するために宣言を行っているとは思いますが、エクセルは常に非表示ですよね?
それでも、もしかしてデータの出力中は
exlApp.Screen.Updating = False
として、グラフをコピーするタイミングで
exlApp.Screen.Updating = True
としてあげると、早くなるかもしれません。

最後の一文は「たぶん」ですので、何にもならなかったら無視してください。
お礼コメント
HUKAHIRE

お礼率 68% (77/113)

すばやい対応いつも、ありがとうございます。早速試してみます。今週で解放されるのかなー?
投稿日時 - 2001-12-06 16:19:39
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ