Excel VBA質問箱 IV

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

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


62802 / 76732 ←次へ | 前へ→

【18531】Re:イメージ図をエクセルに・・・
発言  ichinose  - 04/9/28(火) 23:31 -

引用なし
パスワード
   初心者さん、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には予め画像データをセットして置いてください)

確認してみて下さい。

1 hits

【18486】イメージ図をエクセルに・・・ 初心者 04/9/28(火) 12:13 質問
【18489】Re:イメージ図をエクセルに・・・ IROC 04/9/28(火) 12:55 回答
【18492】Re:イメージ図をエクセルに・・・ 初心者 04/9/28(火) 14:07 回答
【18493】Re:イメージ図をエクセルに・・・ IROC 04/9/28(火) 14:16 回答
【18494】Re:イメージ図をエクセルに・・・ 初心者 04/9/28(火) 14:37 回答
【18496】Re:イメージ図をエクセルに・・・ IROC 04/9/28(火) 14:48 回答
【18498】Re:イメージ図をエクセルに・・・ 初心者 04/9/28(火) 14:54 回答
【18505】Re:イメージ図をエクセルに・・・ IROC 04/9/28(火) 16:03 回答
【18531】Re:イメージ図をエクセルに・・・ ichinose 04/9/28(火) 23:31 発言
【18541】Re:イメージ図をエクセルに・・・ 初心者 04/9/29(水) 9:15 質問
【18547】Re:イメージ図をエクセルに・・・ ichinose 04/9/29(水) 12:55 発言
【18550】Re:イメージ図をエクセルに・・・訂正 ichinose 04/9/29(水) 13:09 発言
【18554】Re:イメージ図をエクセルに・・・訂正 初心者 04/9/29(水) 14:52 お礼

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