Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations IamaSherpa on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Copy and Append Loop Macro

Status
Not open for further replies.

anikixiao

IS-IT--Management
Sep 2, 2010
1
AU
Hi guys I am trying to get a simple Copy and Append Loop going from the Attachmate Extra! screen. Basically there is a report I want to get to txt or excel format. The report is usually around 50000 lines or more.

I recorded the below keystrokes but not sure how to make it loop to the end of the report.

||||||||||||||||||||||||||||||||||||||||||||||||||||||||


Sub Main()
'--------------------------------------------------------------------------------
' Get the main system object
Dim Sessions As Object
Dim System As Object
Set System = CreateObject("EXTRA.System") ' Gets the system object
If (System is Nothing) Then
Msgbox "Could not create the EXTRA System object. Stopping macro playback."
STOP
End If
Set Sessions = System.Sessions

If (Sessions is Nothing) Then
Msgbox "Could not create the Sessions collection object. Stopping macro playback."
STOP
End If
'--------------------------------------------------------------------------------
' Set the default wait timeout value
g_HostSettleTime = 3000 ' milliseconds

OldSystemTimeout& = System.TimeoutValue
If (g_HostSettleTime > OldSystemTimeout) Then
System.TimeoutValue = g_HostSettleTime
End If

' Get the necessary Session Object
Dim Sess0 As Object
Set Sess0 = System.ActiveSession
If (Sess0 is Nothing) Then
Msgbox "Could not create the Session object. Stopping macro playback."
STOP
End If
If Not Sess0.Visible Then Sess0.Visible = TRUE
Sess0.Screen.WaitHostQuiet(g_HostSettleTime)

' This section of code contains the recorded events
Sess0.Screen.CopyAppend
Sess0.Screen.Sendkeys("<Pf8>")
Sess0.Screen.WaitHostQuiet(g_HostSettleTime)

System.TimeoutValue = OldSystemTimeout
End Sub
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||


Any help would be greatly appreciated!
 

hi,

Put this code in a loop
Code:
' This section of code contains the recorded events
    Sess0.Screen.CopyAppend    
    Sess0.Screen.Sendkeys("<Pf8>")    
    Sess0.Screen.WaitHostQuiet(g_HostSettleTime)
You must test your messages after each screen is painted, so if the message in row 24 is CONTINUE then...
Code:
' This section of code contains the recorded events
do while Trim(Sess0.Screen.GetString(24,1,80)) = "CONTINUE"
    [s]Sess0.Screen.CopyAppend[/s] 'don't see this method in Attachmate   
    Sess0.Screen.Copy
'BTW, I almost NEVER use Extra BASIC -- YUK!
'I use Excel VBA, much more versatile!!!
    with xl.YourWorkbookObject.YourSheetObject
       .cells(.[A1].currentregion.rows.count+1,1).paste
    end with

    Sess0.Screen.Sendkeys("<Pf8>")    
    [s]Sess0.Screen.WaitHostQuiet(g_HostSettleTime)[/s]
    Do Until Sess0.Screen.WaitForCursor(1, 1) 'or wherever your cursor rests after <PF8>          
       DoEvents
    Loop
loop


Skip,

[glasses]Just traded in my old subtlety...
for a NUANCE![tongue]
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top