Excel VBA質問箱 IV

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

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


11111 / 76735 ←次へ | 前へ→

【71165】Re:エクセルデータをコピーしメモ帳立ち上げ貼り付ける
発言  ちん  - 12/2/3(金) 11:19 -

引用なし
パスワード
   ▼け さん:こんにちわ、ちんです。
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

ただし、メモ帳の「すべて選択」 のあり方がまったく解りません。
貼り付けまでは、できます。
以上、参考までに・・・
8 hits

【71149】エクセルデータをコピーしメモ帳立ち上げ貼り付ける 12/2/2(木) 16:56 質問
【71150】Re:エクセルデータをコピーしメモ帳立ち上... とおりすぎ 12/2/2(木) 17:25 回答
【71151】Re:エクセルデータをコピーしメモ帳立ち上... とおりすがりがり 12/2/2(木) 17:30 回答
【71152】Re:エクセルデータをコピーしメモ帳立ち上... 12/2/2(木) 17:34 質問
【71154】Re:エクセルデータをコピーしメモ帳立ち上... とおりすぎ 12/2/2(木) 17:45 回答
【71155】Re:エクセルデータをコピーしメモ帳立ち上... とおりすぎ 12/2/2(木) 17:58 回答
【71156】Re:エクセルデータをコピーしメモ帳立ち上... ちん 12/2/2(木) 18:08 発言
【71157】Re:エクセルデータをコピーしメモ帳立ち上... 12/2/2(木) 18:30 お礼
【71158】Re:エクセルデータをコピーしメモ帳立ち上... ちん 12/2/2(木) 22:53 発言
【71159】Re:エクセルデータをコピーしメモ帳立ち上... ちん 12/2/3(金) 0:36 発言
【71160】Re:エクセルデータをコピーしメモ帳立ち上... とおりすがりがり 12/2/3(金) 8:50 回答
【71161】Re:エクセルデータをコピーしメモ帳立ち上... ちん 12/2/3(金) 9:22 発言
【71165】Re:エクセルデータをコピーしメモ帳立ち上... ちん 12/2/3(金) 11:19 発言
【71174】Re:エクセルデータをコピーしメモ帳立ち上... Abyss 12/2/3(金) 16:41 発言

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