
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
日本語の文字化けを直す方法
-
Excel VBAでマウスの左クリック...
-
【エクセル】複数のTextBoxに共...
-
アクセスVBAのMe!と[ ]
-
Access からオブジェクトとして...
-
VB6にて文字型変数の内容をオブ...
-
【エクセルのマクロ】クリップ...
-
「SHDocVw」の意味
-
「ご処理進めて頂きますようお...
-
お家デートをしててハグを長い...
-
CloseとDisposeの違い
-
C言語でグラフ作成??
-
UWSCでループ処理がうまくいき...
-
エクセルVBAで、MsgBox やInput...
-
EXCEL VBA マクロ 実行する度に...
-
「PC Helpsoft Driver Updated...
-
【Excel VBA】マクロボタンを表...
-
メルカリのメルカードで買い物...
-
VBAでループ内で使う変数名を可...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Accessのフォーム上にエクセル...
-
エクセルVBAでセル番地を指定し...
-
VBAで選択範囲外の図形(オブジ...
-
Excel VBAでマウスの左クリック...
-
Excel2007 でのチェックボック...
-
日本語の文字化けを直す方法
-
文字列で小数点以下の0を削除し...
-
VBでExcelの表形式の様なデザイ...
-
ExcelのシートをAccessで表示し...
-
PowerpointVBAで指定のShapeオ...
-
【エクセル】複数のTextBoxに共...
-
【エクセルのマクロ】クリップ...
-
GDIオブジェクトが増える……
-
現在アクティブになっているオ...
-
サブルーチンにオブジェクト名...
-
ビデオキャプチャについて
-
WebBrowser内のフォームをsubmi...
-
コードでオブジェクトを最前面に
おすすめ情報