Vba 在新记事本中写入文本

Vba 在新记事本中写入文本,vba,excel,Vba,Excel,有人能帮我把单元格值写到记事本的新实例吗 以下是我尝试的代码: Sub a() Dim nt As String nt = Shell("notepad.exe", vbNormalFocus) Print #1, ActiveSheet.Cells(1, 1).Value Close #1 End Sub 很多年前,我在vbforums.com上回答了一个类似的问题,但找不到它,所以我很快为您重新编写了它。我已经对代码进行了注释,因此您理解它不会有问题 像你和

有人能帮我把单元格值写到记事本的新实例吗

以下是我尝试的代码:

Sub a()
    Dim nt As String
    nt = Shell("notepad.exe", vbNormalFocus)
    Print #1, ActiveSheet.Cells(1, 1).Value
    Close #1
End Sub

很多年前,我在vbforums.com上回答了一个类似的问题,但找不到它,所以我很快为您重新编写了它。我已经对代码进行了注释,因此您理解它不会有问题

像你和我一样,我们都有名字,类似的窗口有“句柄”(hWnd)、类等。一旦你知道hWnd是什么,就更容易与该窗口交互。Findwindow API使用类名查找特定窗口的hWnd。阅读其余的API

为了获得windows的类名,我通常使用Spy++或uuSpy。看,这就是我如何使用Spy获得记事本的类名“Edit”的++


为什么不将文本写入文件,然后在默认应用程序中打开该文件?这里的文本每次都会更改。所以我想在new notepad.Hmm中显示文本。那么,您希望记事本在Excel中显示单元格的内容吗?您想让记事本始终只显示单元格中的最新值吗?我已经准备了一个日历来显示数据。如果你不了解你的设计,我的想法是直接在excel电子表格中显示数据,但是一张格式适合你的数据的表格。太好了。非常感谢Siddharth。很高兴能提供帮助:)还有一个问题,我把Excel单元格安排成一个:Suman(Alt+enter)二:Surya。消息框显示我在单元格中的排列方式。但便笺簿继续了这段文字:sumanTwo:Surya。我们看不到我如何在Excel中排列数据的数据吗?不,因为你必须使用
WM_paste
而不是
WM_SETTEXT
来复制和粘贴数据。我建议用谷歌搜索如何使用sendmessage粘贴数据。我今天可能无法回复,因为我还有两个小时的航班要赶。谢谢。我使用了工作表(“Sheet1”)。激活ActiveSheet.Cells(4,1)。选择Selection。复制Shell“notepad.exe”,3个SendKeys“^v”VBA.AppActivate.Caption.CutCopyMode=False,但数据如上所述:(回来后请帮助我)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) 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 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 Const WM_SETTEXT = &HC

Private Sub Command1_Click()
    Dim Ret As Long, ChildRet As Long
    Dim sString As String

    '~~> This is the value from the cell which
    '~~> you want to send to notepad
    sString = Range("A1").Value

    '~~> Start Notepad
    Ret = Shell("notepad.exe", vbNormalFocus)

    '~~> Wait for it to load
    DoEvents

    '~~> Find notepad
    Ret = FindWindow(vbNullString, "Untitled - Notepad")

    '~~> Check if found
    If Ret = 0 Then
        MsgBox "Cannot find Notepad Window"
        Exit Sub
    End If

    '~~> Find the "Edit Window" which is a child window of Notepad window
    ChildRet = FindWindowEx(Ret, ByVal 0&, "Edit", vbNullString)

    '~~> Send the message
    SendMessage ChildRet, WM_SETTEXT, 0, ByVal sString
End Sub