![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
Excel VBAでフォームにイメージコントロールを配置して、そこにエクセルで作成したグラフ(グラフシート)を表示するようなプログラムは作成可能でしょうか?
例えば、
まずワークシートのデータを元にグラフ(グラフシート)を作成し、作成したグラフをフォーム上のイメージコントロールに表示させる一連の作業をVBAでプログラミングできるかどうかということです。
Userform1.MultiPage1.Image1.Picture = .........といった感じです。
もしくは、作成したグラフをgif形式の画像として特定のディレクトリなりフォルダに保存して、その画像ファイルを読み込むことで対応はできるでしょうか?
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
というわけで、途中まで作りかけたのですが、芳坂和行さんのホームページで、非常に出来のいいクラスを見つけてしまいましたので、芳坂和行さんのものを紹介しておきます。
■芳坂和行さんのホームページ
http://ww1.cnet-na.ne.jp/h/housaka/
上記のホームページの
http://ww1.cnet-na.ne.jp/h/housaka/excel/persona …
に「クリップボードから Picture オブジェクトを作成するクラス CClipPicture (Excel97)」というのがあります。(Excel2000でも動作します。)
使い方が書いてありませんので、説明すると
1.上記のページの「クリップボードから Picture オブジェクトを作成するクラス CClipPicture (Excel97)」を右クリックして、「対象をファイルに保存...」でCClipPicture.clsというファイル名で保存します。
2.上記で保存したCClipPicture.clsをExcelのVisual Basic のエディタの、ファイルのインポートで、読み込みます。
3.CClipPicture.clsの最初の方に、コメントになったサンプルがありますので、これを利用します。まず、ユーザーフォームを追加して、ユーザーフォームにボタンを2つと、イメージコントロールを1つ配置します。
4.作成したユーザーフォームのソースに、CClipPicture.clsの先頭のほうにある「UserFormでの使用例」以降の連続したコメントの部分を貼り付け、コメントを除きます。
5.シート名がSheet1であるワークシートにグラフを1つ配置します。
あとは、作成したユーザーフォームを動かして、ボタンのいずれかをクリックすると、イメージにグラフがはりつけられます。
という訳で、うまくいったら芳坂和行さんにお礼のメールでもよろしくおねがいします。
具体的かつ詳細な回答ありがとうございます。さっそく試してみます。上手くいったら、うまくいかなくてもポイントを差し上げます。有り難うございました。
No.3
- 回答日時:
すいません。
Visual Basicのカテゴリだったので、VBでやるのだと勘違いしました。Excelのイメージボックスだとクリップボードからの貼り付けは、Windows APIを使用する必要があると思います。というわけで、ちょっと調べないと回答でませんが、待てるのであれば、(約束はできませんが)調べてみます。
No.2
- 回答日時:
クリップボード経由で貼り付けるというのはどうでしょう。
Private Sub Command1_Click()
'参照設定で、Excelのオブジェクトを参照設定してください。
'参照設定しない場合は、下記の変数定義のExcel.ApplicationをObjectにしてください。
Dim objExcel As Excel.Application
'エクセルを起動
Set objExcel = CreateObject("Excel.Application")
'グラフのあるブックを開く
objExcel.Workbooks.Open "C:\Text.xls"
'グラフをコピー(適当に書き変えてください)
objExcel.Worksheets(1).ChartObjects("グラフ 1").Copy
'クリップボードから貼り付け
Image1.Picture = Clipboard.GetData
'クリップボードをクリア
Clipboard.Clear
'ワークブックを閉じる
objExcel.Workbooks(1).Close False
'エクセルを終了
objExcel.Quit
'オブジェクトを開放
Set objExcel = Nothing
End Sub
有り難うございます。
ExcelのVBAで試してみましたが、
Image1.Picture = Clipboard.GetDataの
Clipboardのところでエラーが発生し、
「コンパイル エラー」
「変数が定義されていません」とメッセージが表示されます。
どのように変数を定義したら良いでしょうか
ちなみに、clipbordをvariant形で変数宣言しても駄目でした。
よろしくお願いします。
No.1
- 回答日時:
もし、イメージコントロールを使うなら、クリップボードを経由してコピー&ペーストするようなコードが要るでしょう。
(クリップボード関係のAPIを使う)でも、イメージコントロールにはとらわれない方がいいですね。
それよりも、VBのフォームに「Microsoft Excel グラフ」オブジェクトを貼り付ける方が作りやすいと思います。
このオブジェクトの扱いについては、ExcelのヘルプのChartObjectの項目あたりに書いてあると思います。
(このオブジェクトを操作すれば、グラフ作成のすべての工程をVBAで記述できると思います。(実際に試したわけではないです。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) Excelグラフについて 1 2022/06/16 16:06
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Excel(エクセル) Excel 散布図グラフ 外れ値 セル番地参照方法 4 2022/04/19 18:56
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- その他(Microsoft Office) エクセルでレーダーチャートのグラフを作成しようとしました。 表をレーダーチャートにした際は,問題無く 1 2023/08/10 20:08
- Excel(エクセル) Excelでグラフを作る際、棒グラフと線グラフが一緒になった図を作るには、どのようにExcelに数値 2 2022/04/12 22:24
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2022/03/24 16:07
- Excel(エクセル) エクセル ヒストグラム作成 1 2023/01/02 09:55
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
Excelのユーザーフォームにピボットグラフを表示できますか?
Excel(エクセル)
-
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
-
4
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
5
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
6
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
7
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
8
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
9
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
10
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
文字列で小数点以下の0を削除し...
-
現在アクティブになっているオ...
-
Excel2007 でのチェックボック...
-
Accessのフォーム上にエクセル...
-
VBAでフォームのコントロールの...
-
【エクセルのマクロ】クリップ...
-
日本語の文字化けを直す方法
-
VB6にて文字型変数の内容をオブ...
-
エクセルVBAでセル番地を指定し...
-
アクセスで説明の欄の隠しオブ...
-
GDIオブジェクトが増える……
-
C#で画像をクリップボードへの...
-
WebBrowserオブジェクトにて、...
-
ACCESSマクロ、Me![氏名] その...
-
DLLの共有メモリと排他処理???
-
コードでオブジェクトを最前面に
-
Doevents をご教授ください。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
文字列で小数点以下の0を削除し...
-
エクセルVBAでセル番地を指定し...
-
日本語の文字化けを直す方法
-
Excel2007 でのチェックボック...
-
コードでオブジェクトを最前面に
-
現在アクティブになっているオ...
-
【エクセル】複数のTextBoxに共...
-
ユーザーフォームのインポート...
-
PowerpointVBAで指定のShapeオ...
-
構造体の静的な初期化
-
Imageコントロールにグラフを表...
-
Excel VBA でPictureBoxオブジ...
-
ディスクの総セクタサイズを取...
-
Excelのシート上に設置された全...
-
Access からオブジェクトとして...
おすすめ情報