Excel VBA質問箱 IV

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

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


29608 / 76732 ←次へ | 前へ→

【52403】Re:ファイルの生成
発言  neptune  - 07/11/13(火) 10:45 -

引用なし
パスワード
   ▼kim さん:
解決後みたいですが失礼します。もう見ないかな?

昨日Textの読み込み部分で躓いていたところが昨日解決しました。
・・・・出来るはずなのに出来ないのは悔しいからやってしまった。
APIゴリゴリと書きましたが、そんな事は無かったですね。ゴリぐらい?

サンプル程度ですが、UPしておきます。
解るようになったらおいしい所をとって利用して下さい。
CommandButton1_Clickを改造する事で当初ご希望の事は
出来ると思います。・・・多分です。検証はしてません。

準備:
・新規UserFormを追加
・UserFormにTextBoxを1個、CommandButtonを1こ追加
・以下をUserFormにコピペ
※適当なテキストをメモ帳で開いておく。
・CommandButtonクリックでメモ帳の内容を取得する。
一応動作確認してます。

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        lParam As Any) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
        (ByVal hWnd1 As Long, _
        ByVal hWnd2 As Long, _
        ByVal lpsz1 As String, _
        ByVal lpsz2 As String) As Long

Private Const WM_GETTEXT = &HD
Private Const WM_GETTEXTLENGTH = &HE
Private Const classname As String = "Notepad"
Private Const EditClassName As String = "Edit"


Private Sub CommandButton1_Click()
Dim hOwner As Long
Dim sBuf As String
  'メモ帳のHWND取得
  hOwner = FindWindow(classname, vbNullString)
  sBuf = GetEditData(hOwner)
  Me.TextBox1.Text = sBuf
End Sub

'任意のメモ帳のTextを取得する
'このFunctionを適当に改造するとExcelがお亡くなりになりますから
'理解しないうちは改造しないように。
Private Function GetEditData(phWnd As Long)
Dim hChild As Long
Dim ret As Long, lLen As Long
Dim sBuf As String
Dim bytBuf() As Byte

  'EditのHWND取得
  hChild = FindWindowEx(phWnd, 0&, EditClassName, vbNullString)
  lLen = SendMessage(hChild, WM_GETTEXTLENGTH, 0, 0)
  lLen = lLen + 1
  ReDim bytBuf(lLen)
  'byteで取得するのが味噌だった。???
  ret = SendMessage(hChild, WM_GETTEXT, lLen, bytBuf(0))
  If ret <> 0 Then
    sBuf = StrConv(bytBuf, vbUnicode)
  Else
    sBuf = ""
  End If
  GetEditData = sBuf
End Function

Private Sub UserForm_Initialize()
  Me.TextBox1.MultiLine = True
  Me.TextBox1.ScrollBars = fmScrollBarsBoth
  Me.CommandButton1.Caption = "任意のメモ帳のTextを取得する"
End Sub
2 hits

【52339】ファイルの生成 kim 07/11/9(金) 11:23 質問
【52345】Re:ファイルの生成 neptune 07/11/9(金) 18:45 回答
【52364】Re:ファイルの生成 kim 07/11/10(土) 23:37 質問
【52371】Re:ファイルの生成 neptune 07/11/11(日) 12:49 発言
【52366】Re:ファイルの生成 かみちゃん 07/11/10(土) 23:59 発言
【52377】Re:ファイルの生成 kim 07/11/11(日) 14:44 質問
【52378】Re:ファイルの生成 とおりすがり 07/11/11(日) 15:33 発言
【52379】Re:ファイルの生成 neptune 07/11/11(日) 18:46 回答
【52382】Re:ファイルの生成 kim 07/11/11(日) 22:08 質問
【52389】Re:ファイルの生成 neptune 07/11/12(月) 14:17 発言
【52390】Re:ファイルの生成 ichinose 07/11/12(月) 17:46 発言
【52395】Re:ファイルの生成 kim 07/11/12(月) 19:04 お礼
【52393】Re:ファイルの生成 kim 07/11/12(月) 18:43 お礼
【52403】Re:ファイルの生成 neptune 07/11/13(火) 10:45 発言
【52404】Re:ファイルの生成 kim 07/11/13(火) 12:27 お礼

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