|    | 
     ▼け さん:こんにちわ、ちんです。 
APIを使用すると、こんな形です。 
 
Option Explicit 
'クラス名、キャプションから子ウィンドウのハンドルを取得 
Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _ 
  (ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _ 
   ByVal lpClassName As String, ByVal lpWindowName As String) As Long 
'引数 
' hwndParent:子ウィンドウを見つけるときの親ウィンドウのハンドル 
'   (デスクトップを親ウィンドウとするとき0) 
' hwndChildAfter:検索を開始する子ウィンドウのハンドル 
'   0 を設定したとき、hwndParentの最初の子ウィンドウから検索する 
' lpszClass:クラス名 
' lpszWindow:ウィンドウのキャプション(タイトル) 
' 
'戻り値 
' 正常終了のとき ウィンドウのハンドル、エラーのとき 0 
' 
'FindWindow()関数との違いは子ウィンドウか検索できること。 
'hwndParentとhwndChildAfterが共に0のときトップレベルウィンドウが検索対象。 
 
' ウィンドウにメッセージを送る関数の宣言 
Public Declare Function SendMessage Lib "user32.dll" _ 
  Alias "SendMessageA" _ 
  (ByVal hWnd As Long, _ 
  ByVal Msg As Long, _ 
  ByVal wParam As Long, _ 
  lParam As Any) As Long 
 
' ウィンドウにメッセージを送る関数の宣言 
Public Declare Function SendMessageAny Lib "user32.dll" _ 
  Alias "SendMessageA" _ 
  (ByVal hWnd As Long, _ 
  ByVal Msg As Long, _ 
  ByVal wParam As Long, _ 
  ByVal lParam As Any) As Long 
 
Public Const WM_IME_CHAR = &H286  '文字コード送信 
Public Const WM_SETTEXT = &HC    '文字列送信 
Private Const WM_COPY = &H301    'コピー (P837) 
Private Const WM_CUT = &H300    '切り取り(P840) 
Private Const WM_PASTE = &H302   '貼り付け(P876) 
Private Const WM_UNDO = &H304    '元に戻す(P892) 
 
Sub TEST() 
  Dim lnghWnd As Long    'トップレベル(親)のウィンドウハンドル 
  Dim lnghWndTarget As Long 'ターゲット(子)のウィンドウハンドル 
  Dim lngRc As Long     'APIの返却値 
   
  '------------------------------------- 
  ' メモ帳を起動 
  '------------------------------------- 
  lngRc = Shell(Environ("WINDIR") & "\NOTEPAD.EXE", vbNormalFocus) '起動 
  Sleep 100        '0.1秒待つ(起動完了) 
   
  '------------------------------------- 
  ' ターゲットウィンドウのハンドルを取得 
  '------------------------------------- 
  lnghWnd = FindWindowEx(0, 0, "Notepad", "無題 - メモ帳") '「メモ帳」のウィンドウハンドル 
  lnghWndTarget = FindWindowEx(lnghWnd, 0, "Edit", "") '子ウィンドウのEdit 
   
  '------------------------------------- 
  ' 送信 
  '------------------------------------- 
  Dim strDtSrc As String 
  Dim strDt As String 
 
   
  Dim lngDt As Long 
  Dim i As Long 
   
  Cells.Select  '*** シートのセル全て選択 
  Selection.Copy '*** シートのコピー 
   
  '*** Excelシートのデータをメモ帳へ貼り付け Ctrl+V 
  lngRc = SendMessage(lnghWndTarget, WM_PASTE, 0, 0) 
     
End Sub 
 
ただし、メモ帳の「すべて選択」 のあり方がまったく解りません。 
貼り付けまでは、できます。 
以上、参考までに・・・ 
 | 
     
    
   |