首页 文章

将数据从Excel复制到记事本

提问于
浏览
3

我正在将数据从excel复制到记事本,并且使用 SendKeys excel VBA功能成功 .

但我正在寻找可以帮助我避免使用sendkeys的任何工作 .

我现在有这个代码:

sub test()

    dim wb as Workbook
    set wb = "C:\Documents\test.xlsx"
    wb.Sheets(2).Range("C2:C" & lRow).Copy
    myApp = Shell("Notepad.exe", vbNormalFocus)
    SendKeys "^v"
    Application.CutCopyMode = False
    wb.Sheets(2).Range("C2:C" & lRow).NumberFormat = "@"
 end sub

这只复制了从excel到记事本的数据,但在excel文件中进行了一些修正之后,我希望从记事本中复制的数据再次从C2开始复制到excel .

5 回答

  • 0

    这是 SendKeys 的另一个过程:

    • 从工作表上的一系列单元格中获取值

    • 副本到剪贴板

    • 将剪贴板内容转换为字符串

    • 将该字符串保存到临时文件

    • 打开带有临时文件内容的Notepad.exe

    码:

    Option Explicit
    
    Sub OpenNotepadWithTempFileWithClipboardContent()
    
        Dim rngData As Range
        Dim strData As String
        Dim strTempFile As String
    
        ' copy some range values
        Set rngData = Sheet3.Range("B1:B5")
        rngData.Copy
    
        ' get the clipboard data
        ' magic code for is for early binding to MSForms.DataObject
        With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
            .GetFromClipBoard
            strData = .GetText
        End With
    
        ' write to temp file
        strTempFile = "D:\temp.txt"
        With CreateObject("Scripting.FileSystemObject")
            ' true to overwrite existing temp file
            .CreateTextFile(strTempFile, True).Write strData
        End With
    
        ' open notepad with tempfile
        Shell "cmd /c ""notepad.exe """ & strTempFile & """", vbHide
    
    End Sub
    
  • 1

    您可以使用文件系统对象写入文本文件:

    Dim fso as Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Dim oFile as Object
    Set oFile = FSO.CreateTextFile(strPath)
    
    oFile.WriteLine "test" 
    
    oFile.Close
    Set fso = Nothing
    Set oFile = Nothing
    

    欲了解更多信息,请访问:https://technet.microsoft.com/en-us/library/ee198716.aspx

  • 2

    有点太晚了,但您可以将数据复制到剪贴板并将其粘贴为文本(已测试并正常工作):

    Dim r As Range
    Set r = wb.Sheets(2).Range("C2:C" & lRow)
    r.Copy
    
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        Application.CutCopyMode = False
        .PutInClipboard
    End With
    
    r.Select
    r.NumberFormat = "@"
    r.Worksheet.PasteSpecial "Text"
    
  • 0

    这可能是非常好的东西:

  • 3
    'This macros may solve your problem
        Sub SaveMySheetAsTextFile()
            Sheets("Sheet1").Select
            ActiveWorkbook.SaveAs Filename:="C:\mynotepadfile.txt", FileFormat:=xlText
        End Sub
    

相关问题