Excel VBAでフォームにイメージコントロールを配置して、そこにエクセルで作成したグラフ(グラフシート)を表示するようなプログラムは作成可能でしょうか?
例えば、
まずワークシートのデータを元にグラフ(グラフシート)を作成し、作成したグラフをフォーム上のイメージコントロールに表示させる一連の作業をVBAでプログラミングできるかどうかということです。
Userform1.MultiPage1.Image1.Picture = .........といった感じです。
もしくは、作成したグラフをgif形式の画像として特定のディレクトリなりフォルダに保存して、その画像ファイルを読み込むことで対応はできるでしょうか?
よろしくお願いします。
No.1
- 回答日時:
もし、イメージコントロールを使うなら、クリップボードを経由してコピー&ペーストするようなコードが要るでしょう。
(クリップボード関係のAPIを使う)でも、イメージコントロールにはとらわれない方がいいですね。
それよりも、VBのフォームに「Microsoft Excel グラフ」オブジェクトを貼り付ける方が作りやすいと思います。
このオブジェクトの扱いについては、ExcelのヘルプのChartObjectの項目あたりに書いてあると思います。
(このオブジェクトを操作すれば、グラフ作成のすべての工程をVBAで記述できると思います。(実際に試したわけではないです。)
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.3
- 回答日時:
すいません。
Visual Basicのカテゴリだったので、VBでやるのだと勘違いしました。Excelのイメージボックスだとクリップボードからの貼り付けは、Windows APIを使用する必要があると思います。というわけで、ちょっと調べないと回答でませんが、待てるのであれば、(約束はできませんが)調べてみます。
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つ配置します。
あとは、作成したユーザーフォームを動かして、ボタンのいずれかをクリックすると、イメージにグラフがはりつけられます。
という訳で、うまくいったら芳坂和行さんにお礼のメールでもよろしくおねがいします。
具体的かつ詳細な回答ありがとうございます。さっそく試してみます。上手くいったら、うまくいかなくてもポイントを差し上げます。有り難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
6
Excelのユーザーフォームにピボットグラフを表示できますか?
Excel(エクセル)
-
7
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
8
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
9
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
10
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
Excel、VBAのユーザーフォームのラベルで変数を…
Excel(エクセル)
-
13
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
14
Excelで隠れてしまった図やテキストボックスを探す方法
Excel(エクセル)
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
GPIB制御
その他(ソフトウェア)
-
17
UserForm1.Showでエラーになります。
工学
-
18
UserForm.showでマルチページ1を見出し
Visual Basic(VBA)
-
19
DoEventsがやはり分からない
Visual Basic(VBA)
-
20
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスVBAのMe!と[ ]
-
VBA エンターキーでイベントに...
-
Excel2007 でのチェックボック...
-
ユーザーフォームのインポート...
-
日本語の文字化けを直す方法
-
Excel VBAでマウスの左クリック...
-
エクセルVBAでセル番地を指定し...
-
Doevents をご教授ください。
-
認識するイベントの範囲を制限...
-
Excelのシート上に設置された全...
-
Access からオブジェクトとして...
-
Webbrowserで完全にHPを表示さ...
-
起動済のIEから.NET Framework...
-
ExcelVBA:フォーム2のイメージ...
-
【エクセル】複数のTextBoxに共...
-
現在アクティブになっているオ...
-
Excelを閉じるときVBAプロジェ...
-
【VBA】ワークシート上に画像フ...
-
Accessのフォーム上にエクセル...
-
文字列で小数点以下の0を削除し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
【エクセルのマクロ】クリップ...
-
Accessのフォーム上にエクセル...
-
Excel VBAでマウスの左クリック...
-
文字列で小数点以下の0を削除し...
-
現在アクティブになっているオ...
-
日本語の文字化けを直す方法
-
エクセルVBAでセル番地を指定し...
-
【エクセル】複数のTextBoxに共...
-
ユーザーフォームのインポート...
-
VBAでフォームのコントロールの...
-
コードでオブジェクトを最前面に
-
ExcelのシートをAccessで表示し...
-
Access からオブジェクトとして...
-
PowerpointVBAで指定のShapeオ...
-
「SHDocVw」の意味
-
Excel2007 でのチェックボック...
-
サブルーチンにオブジェクト名...
-
txtNo,txtDate等の意味
おすすめ情報