|
▼け さん:こんにちわ、ちんです。
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
ただし、メモ帳の「すべて選択」 のあり方がまったく解りません。
貼り付けまでは、できます。
以上、参考までに・・・
|
|