Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5520 / 13645 ツリー ←次へ | 前へ→

【50304】Form上のImageコントロールの画像をシートに貼りたい ichi 07/7/19(木) 10:02 質問[未読]
【50305】Re:Form上のImageコントロールの画像をシートに貼り... ぱっせんじゃー 07/7/19(木) 10:26 発言[未読]
【50307】Re:Form上のImageコントロールの画像をシートに貼り... ichi 07/7/19(木) 10:46 発言[未読]
【50319】Re:Form上のImageコントロールの画像をシートに貼り... ハチ 07/7/19(木) 14:50 発言[未読]
【50322】Re:Form上のImageコントロールの画像をシートに貼り... ichi 07/7/19(木) 15:40 発言[未読]
【50327】Re:Form上のImageコントロールの画像をシートに貼り... Ned 07/7/19(木) 17:59 発言[未読]
【50339】Re:Form上のImageコントロールの画像をシートに貼り... ichi 07/7/20(金) 10:54 お礼[未読]
【50338】Re:Form上のImageコントロールの画像をシートに貼り... ichi 07/7/20(金) 10:53 お礼[未読]

【50304】Form上のImageコントロールの画像をシートに貼りた...
質問  ichi  - 07/7/19(木) 10:02 -

引用なし
パスワード
   皆様 こんにちは。
教えていただきたい事があり、初めて質問します。
現在UserForm上にImageコントロールが10個あり、
その各Imageには、ある別々の画像を貼り付けてあります。
その一つのImageコントロールをクリックした時、
Excellのシートに、クリックしたImageの画像を貼り付けたい
と思っているのですが、どうしたらよいかわかりません。
教えていただけないでしょうか?
宜しくお願いいたします。
以上

【50305】Re:Form上のImageコントロールの画像をシートに貼...
発言  ぱっせんじゃー  - 07/7/19(木) 10:26 -

引用なし
パスワード
   なかなか難しいと思います。
シート上のシェイプなら、どのシェイプがクリックされたかを取得できますが、
ユーザーフォーム上のコントロールでしたら、全てのコントロールにコードを
書き込んでいくか、クラスを使ってどのコントロールからマクロが呼び出されたかを
取得する必要があります。
クラスを使った方法は分かりません。

また、複数のImageコントロールに表示される画像はフォルダなどから規則に従って
順に表示されているのでしょうか?
もしそうでしたら、比較的簡単に、今どのImageにどの画像が表示されているかを
取得できます。
サンプルです。

Dim i as integer
Dim f as string
 For i = 1 to 10
  f = "D:\test\hoge" & i & ".jpg"
  Me.Controls("Image" & i).Picture = LoadPicture(f)
  Worksheets(1).cells(i,1).Value = f
 Next i

【50307】Re:Form上のImageコントロールの画像をシートに貼...
発言  ichi  - 07/7/19(木) 10:46 -

引用なし
パスワード
   すいません。説明不足でした。
画像は、FormのImageに貼り付けたものだけで、
画像ファイルを持っていません。(Imageコントロール上のPictureの
情報のみです)
なので、
>  f = "D:\test\hoge" & i & ".jpg"
のようなコードを書けないのです。
そして、Imageをクリックした場合のイベントは、既にクラス
モジュールを使って作成済みであります。

宜しくお願いします。

【50319】Re:Form上のImageコントロールの画像をシートに貼...
発言  ハチ  - 07/7/19(木) 14:50 -

引用なし
パスワード
   >画像は、FormのImageに貼り付けたものだけで、
>画像ファイルを持っていません。(Imageコントロール上のPictureの
>情報のみです)

このあたりの意味が良くわかりませんが、
ImageコントロールならSavePictureで
一度ファイルにできませんか?
試してませんので、動かなかったらすいません。

Dim myFile As String
myFile = ThisWorkbook.Path & "\Tmp.bmp"
Call SavePicture(Me.Image1.Picture, myFile)
ActiveSheet.Pictures.Insert myFile
Kill myFile

【50322】Re:Form上のImageコントロールの画像をシートに貼...
発言  ichi  - 07/7/19(木) 15:40 -

引用なし
パスワード
   御教授ありがとうございます。
SavePictureとは何でしょうか?ヘルプを探しましたが見つかりませんでした。

私の方がもっと具体的に示した方がよかったですね。
ワークシートにImageコントロールを置いて、Pictureプロパティで、
ファイルにある画像を設定します。このImageを別のExcelのシートに
コピーする場合は、
  ActiveSheet.Shapes("Image1").Select
  Selection.Copy
     ・
     ・
  Activesheet.Paste
のような感じですよね。これがUserForm上のImageコントロールの場合
  cells(1,1)=UserForm1.image1.Picture
とやっても、変な数字が貼り付けられるだけです。

先ほど画像を貼り付けると書きましたが、Imageコントロールごと
を意味しています。
なにかいい案がないでしょうか?

【50327】Re:Form上のImageコントロールの画像をシートに貼...
発言  Ned  - 07/7/19(木) 17:59 -

引用なし
パスワード
   ▼ichi さん:
こんにちは。横から失礼します。
>画像ファイルを持っていません。(Imageコントロール上のPictureの情報のみです)
これ、高度なテクニックですよね?
Clipboardから取得されているのでしょうか。

でも、とりあえず
>SavePictureとは何でしょうか?ヘルプを探しましたが見つかりませんでした。
についてはこちらが参考になるかも
tp://officetanaka.net/excel/vba/statement/index.htm


>Imageコントロールごと
とは、Imageコントロールそのものではなくて、
『Imageコントロールのフレームの大きさで』ととらえた場合、
シート上にImageコントロールをつくっておいて、
それを経由するという方法も考えられるかと思います。

Private Sub CommandButton1_Click()
  With Sheet1
    With .Image1
      .Visible = True
      .Picture = Me.Image1.Picture
      DoEvents: DoEvents
      .CopyPicture
      .Visible = False
    End With
    .Paste Cells(1)
  End With
End Sub

【50338】Re:Form上のImageコントロールの画像をシートに貼...
お礼  ichi  - 07/7/20(金) 10:53 -

引用なし
パスワード
   ありがとうございます。
▼ハチ さん:
>Dim myFile As String
>myFile = ThisWorkbook.Path & "\Tmp.bmp"
>Call SavePicture(Me.Image1.Picture, myFile)
>ActiveSheet.Pictures.Insert myFile
>Kill myFile

この通りでままでできました。!
ありがとうございました。

【50339】Re:Form上のImageコントロールの画像をシートに貼...
お礼  ichi  - 07/7/20(金) 10:54 -

引用なし
パスワード
   ▼Ned さん:
>>SavePictureとは何でしょうか?ヘルプを探しましたが見つかりませんでした。
>についてはこちらが参考になるかも
>tp://officetanaka.net/excel/vba/statement/index.htm
>
たいへん参考になりました。ありがとうございます。

5520 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free