| 
    
     |  | 初心者さん、IROC さん、こんばんは。 ユーザーフォーム(Userform1)にイメージコントロール(Image1)とコマンドボタン
 (Commandbutton1)があると想定しましょう。
 
 まず、コピー&ペーストで画像が表示されているユーザーフォーム上のImageコントロールのみの処理ならば、
 例えば、コマンドボタンのクリックイベントで、
 '==========================================================
 Private Sub CommandButton1_Click()
 Call SavePicture(Image1.Picture, ThisWorkbook.Path & "\temp.gif")
 ActiveSheet.Pictures.Insert ThisWorkbook.Path & "\temp.gif"
 End Sub
 
 なんてコードでイメージコントロールの内容をシートに表示する事は可能です
 (このコードのあるマクロは一度保存してから実行して下さい。Thisworkbook.Path
 を使用しているため・・)。
 イメージコントロールの上にラベルが貼り付けてあるのならそれだけ新たにシート上に
 作成しても良いかと思います(それの方が簡単だから)。
 
 
 他の方法としては、ユーザーフォームに対してハードコピーをとって、シートに貼り付けた後、トリミングするという方法。
 但し、ラベルは、イメージコントロールの中にあるという想定です。
 
 Print Screenって、Sendkeysではできないんでしょうか?
 仕方ないんで調べました。
 APIの細かいところは、
 
 http://support.microsoft.com/default.aspx?scid=kb;en-us;240653
 
 ↑を参考にしました(というより、ほぼコピー)。
 
 最初と同様に
 
 ユーザーフォーム(Userform1)にイメージコントロール(Image1)とその中に収まるようなラベル(Label1)とコマンドボタン(Commandbutton1)があると想定しましょう。
 標準モジュールに
 
 '================================================================
 Option Explicit
 
 Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
 bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
 
 Declare Function GetVersionExA Lib "kernel32" _
 (lpVersionInformation As OSVERSIONINFO) As Integer
 
 Public Type OSVERSIONINFO
 dwOSVersionInfoSize As Long
 dwMajorVersion As Long
 dwMinorVersion As Long
 dwBuildNumber As Long
 dwPlatformId As Long
 szCSDVersion As String * 128
 End Type
 
 Public Const KEYEVENTF_KEYUP = &H2
 Public Const VK_SNAPSHOT = &H2C
 Public Const VK_MENU = &H12
 '============================================================
 Sub main()
 UserForm1.Show
 End Sub
 
 
 'Userform1のモジュールには、
 
 '=============================================================
 Dim blnAboveVer4 As Boolean
 '=============================================================
 Private Sub CommandButton1_Click()
 Dim shp As Shape
 If blnAboveVer4 Then
 keybd_event VK_SNAPSHOT, 1, 0, 0
 Else
 keybd_event VK_MENU, 0, 0, 0
 keybd_event VK_SNAPSHOT, 0, 0, 0
 keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
 keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
 End If
 DoEvents
 ActiveSheet.Select
 Range("a1").Select
 ActiveSheet.Paste
 Call Trimming
 End Sub
 '=================================================================
 Private Sub UserForm_Initialize()
 Dim osinfo As OSVERSIONINFO
 Dim retvalue As Integer
 osinfo.dwOSVersionInfoSize = 148
 osinfo.szCSDVersion = Space$(128)
 retvalue = GetVersionExA(osinfo)
 If osinfo.dwMajorVersion > 4 Then blnAboveVer4 = True
 End Sub
 '===================================================================
 Sub Trimming()
 With ActiveSheet
 Set shp = .Shapes(.Shapes.Count)
 With shp.PictureFormat
 .CropTop = Image1.Top + 15.75
 .CropLeft = Image1.Left
 .CropRight = Me.Width - Image1.Left - Image1.Width
 .CropBottom = Me.Height - Image1.Top - Image1.Height - 15.75
 End With
 End With
 End Sub
 
 
 mainを実行して、コマンドボタンをクリックしてみてください。
 (イメージコントロールのPictureには予め画像データをセットして置いてください)
 
 確認してみて下さい。
 
 
 |  |