【问题标题】:Copying data from Hummingbird HostExplorer to Excel将数据从 Hummingbird HostExplorer 复制到 Excel
【发布时间】:2015-10-08 13:13:00
【问题描述】:

我目前正在尝试创建一个脚本来将数据从 Hummingbird HostExplorer 屏幕复制到 Excel(本质上是屏幕抓取)。我可以毫无问题地创建 Excel 实例,也可以毫无问题地将数据粘贴到 Word 中,但我根本无法弄清楚(即使经过数小时的在线搜索)如何将数据实际粘贴到 Excel 中。

这是目前的代码:

    Sub Main 
    Dim Host As Object                         
    Dim HE as Object                          
    Set HE = CreateObject( "HostExplorer" )
    Set Host = HE.CurrentHost
    Dim iPSUpdateTime
    Dim HostExplorer as Object
    Dim MyHost as Object

    On Error goto ErrorCheck

    Set HostExplorer = CreateObject("HostExplorer") ' Initialize HostExplorer Object
    Set MyHost = HostExplorer.HostFromProfile("EDC") ' Set object for the desired session

    iPSUpdateTime = 60   ' PS Update wait time set to 60 seconds

'-------------------------------------         
' insertion of code to change to A226         
'-------------------------------------

    MyHost.RunCmd("Home")
    MyHost.RunCmd("Back-Tab")
    MyHost.Keys("a226")
    MyHost.RunCmd("Enter")
    MyHost.WaitPSUpdated iPSUpdateTime, TRUE
    MyHost.Keys("001dis010101")
    MyHost.RunCmd("Tab")
    MyHost.RunCmd("Tab")
    MyHost.RunCmd("Tab")
    MyHost.RunCmd("Tab")
    MyHost.Keys("c")
    MyHost.RunCmd("Enter")
    MyHost.WaitPSUpdated iPSUpdateTime, TRUE     

'----------------------------   
' code to copy data to Excel    
'----------------------------

    Dim XLS As Object                          
    Set XLS = CreateObject("Excel.Sheet")      
    XLS.FileNewDefault         

    For i = 1 to Host.Rows                                                       
        XLS.FONT "Courier New"                  
        XLS.FontSize 8                               
    Next i




'-------------
' Error check
'-------------
ErrorCheck:
  if (Err = 440) Then
    Msgbox "The specified session is not running.", 16, "Hummingbird Macro Error"
  End If
  Exit Sub
End Sub

当我运行它时,它会到达XLS.FileNewDefault,但随后会跳过For i 部分并直接进行错误检查。但是,如果我改变:

Set XLS = CreateObject("Excel.Sheet")  

Set XLS = CreateObject("Word.Basic")  

它可以很好地粘贴到 Word 中。

我在这里错过了一些非常简单的事情吗?

【问题讨论】:

    标签: excel screen-scraping basic


    【解决方案1】:

    以下代码创建一个 Excel 工作簿并将剪贴板的内容粘贴到新工作表中:

    option explicit
    
    dim XLS, Book, Sheet
    
    'Load Excel Application.
    Set XLS = CreateObject("Excel.Application")
    
    'By default it is invisible, so make it visible.
    XLS.visible = true
    
    'Still there is no workbook, so add one now.
    set Book=XLS.Workbooks.Add()
    
    'By default a workbook has 3 worksheets; we will work on the first one.
    set Sheet=Book.Sheets(1)
    
    'Call sheet.paste to paste the content of the clipboard into the active cell
    '(which is by default "A1").
    Sheet.paste
    

    【讨论】:

    • 您能否为您的答案添加一些解释?
    • 我提交了创建 excel 工作簿的部分并将剪贴板的内容粘贴到新的工作表中。
    • 感谢您的解释。不幸的是,VB 没有语法高亮显示,所以我将您的 cmets 移到自己的行中以增加可读性。我还将您的评论内容放在您的回答中。希望您对我的编辑感到满意。
    • 欢迎您@honk,感谢您的努力
    • 谢谢,下周我会试试看的!
    猜你喜欢
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多