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も見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
-
4
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
5
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
6
Excelのユーザーフォームにピボットグラフを表示できますか?
Excel(エクセル)
-
7
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
8
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
11
別のシートから値を取得するとき
Visual Basic(VBA)
-
12
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
13
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
14
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
15
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
16
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
17
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
18
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
19
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
20
VBAでマルチページのページ指定方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
【エクセル】複数のTextBoxに共...
-
文字列で小数点以下の0を削除し...
-
Excel2007 でのチェックボック...
-
VBでExcelの表形式の様なデザイ...
-
VBからCrystalReportsへSQL文を...
-
エクセルVBA初心者です。オブジ...
-
VB.NET Image型データをファイ...
-
ACCESSマクロ、Me![氏名] その...
-
txtNo,txtDate等の意味
-
アクセスで説明の欄の隠しオブ...
-
Excel VBA でPictureBoxオブジ...
-
カッコ付けのオブジェクト名を...
-
エクセルのデータをwebフォーム...
-
日本語の文字化けを直す方法
-
ディスクの総セクタサイズを取...
-
VBAで選択範囲外の図形(オブジ...
-
構造体の静的な初期化
-
WSH or VBの質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
Excel VBAでマウスの左クリック...
-
エクセルVBAでセル番地を指定し...
-
Excel2007 でのチェックボック...
-
現在アクティブになっているオ...
-
【エクセルのマクロ】クリップ...
-
日本語の文字化けを直す方法
-
【エクセル】複数のTextBoxに共...
-
コードでオブジェクトを最前面に
-
Accessのフォーム上にエクセル...
-
文字列で小数点以下の0を削除し...
-
PowerpointVBAで指定のShapeオ...
-
LoadImage関数について(VC++)
-
ユーザーフォームのインポート...
-
VBAでフォームのコントロールの...
-
構造体の静的な初期化
-
Access からオブジェクトとして...
-
[C#] DataGridViewの項目名
-
エクセルのデータをwebフォーム...
おすすめ情報