[[20171114152203]] 『ユーザーフォームにグラフを表示させたい』(まらお) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームにグラフを表示させたい』(まらお)

お世話になります
ご教授頂けたら幸いです
下記サイトを参考に
http://www.moug.net/tech/exvba/0090060.html
下記の様に Sheet graph にあるグラフ26をユーザーフォームに表示させたいのですが
表示する事ができません

どの様にすればいいのでしょうか
お願いいたします

Private Sub UserForm_Initialize()

Dim Image1 As Variant

Const GRAPH_IMAGE As String = "ThisWorkbook.Path\Graph.bmp"

    'グラフの存在チェック
    If ActiveSheet.ChartObjects.Count = 0 Then Exit Sub

    'グラフを画像として保存
    Worksheets("graph").ChartObjects(26).Chart.Export GRAPH_IMAGE

    '画像ファイルをImageに読み込み
    If Len(Dir(GRAPH_IMAGE)) > 0 Then
        With Image1
            .PictureSizeMode = fmPictureSizeModeClip      '拡大・縮小なし
            .PictureAlignment = fmPictureAlignmentCenter  '中央配置
            .BorderStyle = fmBorderStyleNone              '枠なし
            .Picture = LoadPicture(GRAPH_IMAGE)
        End With
        '画像ファイルを削除
        Kill GRAPH_IMAGE
    End If
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 イメージ(Image1のこと)って冒頭で変数宣言してますけど、これコントロールの話でしたよね?
 UserForm上にイメージコントロールを配置しないといけないんじゃないでしょうか。
(わをん) 2017/11/14(火) 16:09

まらおさんは、質問するのが早すぎです。 第3者に質問する前に、もう少しご自身でやれる事があるはず。

まず、元ソースのページに書いてある内容を、順次そのまま実行しましょう。 すると、序盤に「UserFormにImageコントロールを配置してから実行してください。」と書いてありますよね? Dim Image1 とするようには書いていませんよね?

次に、元のコードでは"C:\Data\Graph.jpg"のように、画像ファイル名はフルパスで書いてあります。 それを"ThisWorkbook.Path\Graph.bmp" と変えていますが、ドライブ名からきっちりフルパスで書きましょう。 更には、"ThisWorkbook.Path"ってダブルクォートで括ってしまうと、これはフルパスを示すプロパティではなく、単なる文字列になりますが、そんなフォルダを作成していませんよね? 画像保存できていますか? うまくいかない場合は、元のコードに合わせてから、デバッグしてみてください。

そして、moug でコードを見つけたのは良いですが、それなら moug の掲示板で質問すべきですよ。 元コードを書いた人にも、こっちの回答者にも、両方に対して失礼な行為です。 気をつけてください。
(???) 2017/11/14(火) 16:35


???様
貴重な御時間有難う御座います
先ず
早すぎるか早過ぎないかについて
貴殿に判断される事ではないと認識します

アップされてる内容が読みきれてないので質問しているだけの事で
何故だめな所指摘だけで終われないのか?
此処の掲示板の意味を問いたくなるご意見ですね

mougに対して
mougだろうが何処だろうが ネット上に一般公開されたのだから
moug内部じゃなきゃいけないとか関係ないと思います

あの記事は一般公開で 質問等する為の登録関係無しに見れるからです

あの記事が登録者限定 サイト内限定記事ならば
貴殿の言う分も考慮できますが
一般公開している以上 何処で論議しようと
関係ないと考えられます

貴殿は確かにプログラム等精通していると思いますが
この様な見識には少し狭いと考えます

私が仮にあの記事を書いていて 他のサイトで論議された場合
嬉しくなりますけどね

他のサイトでも論議になるんだって

その根拠は一般公開しているからです
(まらお) 2017/11/15(水) 09:13


ついでに
MOUGは質問等について
登録を掛けないとできない仕組みなっているので
私的にはめんどくさいので
使用する気にはなりません
ご意見番の気分ひとつで攻撃されたりするのは
ここでも MOUGでも見ます
そのようなことを踏まえると

わざわざ気分を害する為に
登録する気には 私的にはなれません
(まらお) 2017/11/15(水) 09:18


 ???さんでなくてすみませんが。

 肝心の質問内容についてはどうだったのでしょう。私からも???さんからも、
 ダメなところの指摘はされていたはずです。

 そちらを修正して改善したのか、されていないのか、もう解決する気がないのか。

 私も、どちらのサイトで議論しようと構わないと思いますが、
 一度投げた以上ある程度のところまで話を続けてほしいと思います。
 まらおさんと同じような悩みを抱えた人が
 今後この掲示板を見た時に参考になるかもしれないからです。

 質問を続ける気もないのにわざわざ本筋から離れたところで話を続けるのはおやめください。
(わをん) 2017/11/16(木) 10:35

わをん様

色々有難う御座います
又申し訳御座いませんでした
結論から言いますと出来ました

MOUGと下記のページを参考にさせていただきました

http://www.max.hi-ho.ne.jp/happy/YNxv9d92.html
(まらお) 2017/11/16(木) 13:22


Sub grawer()
 Worksheets("Graph").ChartObjects(6).Chart.Export ThisWorkbook.Path & "\Chart1.gif"
 UserForm1.Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Chart1.gif")
  With UserForm1.Image1
            .PictureSizeMode = 3
            .BorderStyle = fmBorderStyleNone
            .Picture = LoadPicture(ThisWorkbook.Path & "\Chart1.gif")
        End With
 UserForm1.Show vbModeless
 Kill ThisWorkbook.Path & "\Chart1.gif"
End Sub
(まらお) 2017/11/16(木) 13:42

 目的を達成することは無事できたのですね。よかったです。
 しっかり報告に来てくださって嬉しいです。

 いきなり否定されて熱くなってしまう気持ちもわかりますが、???さんとしては
 もっとデバッグを試してみてVBAについての理解を深めてほしかったのだと思いますので、
 今後VBAに取り組む際には少しだけ思い出してみてくださいね。
  
  
 私としても、ユーザーフォームにシート上のグラフを画像表示、
 という案件は少々関心がありましたので、自分でもコードを試していました。

 ・Const使用時には「ThisWorkbook.Path」は使用できない
[[20091210092804]] 『定数式が必要です』(めんとす)
 上記のことを初めて知ったので、大変勉強になりました。
 (ConstではなくDimでString変数を宣言し、その変数にパスを格納しました)

 機会を作ってくださったまらおさんに感謝しています。
(わをん) 2017/11/16(木) 13:45 (過去ログ部分をリンクするように編集 13:54)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.