2017-01-20 13 views
0

HostExplorer 메인 프레임 터미널 에뮬레이터로 작업하고 있습니다. 내 VBA 지식은 다른 매크로를 만들기 위해 온라인에서 찾은 정보 비트를 결합하여 만들어졌습니다.HostExplorer 메인 프레임 에뮬레이터 화면의 Excel 텍스트 입력

메인 프레임에 인보이스를 입력하고 몇 개의 화면간에 이동하고 링크를 생성하는 정보를 입력 한 다음 해당 링크를 사용하여 컴퓨터의 미리 정해진 폴더에 파일을 저장하는 매크로를 만듭니다.

입력 정보 부분에 붙어 있습니다. 마지막 화면으로 이동 한 후 메인 프레임의 특정 필드에 텍스트를 입력해야합니다.

나는 화면에서 위치를 식별하고이를 사용하여 변수를 만드는 방법을 알고 있습니다.

어떻게하면 역순으로 할 수 있습니까? 변수 (또는 임의의 문자)에있는 문자열을 화면의 특정 위치에 입력 할 수 있습니까?

Sub MiscFileDownload() 

Dim HostExplorer As Object 
Dim MyHost As Object 
Dim Rc As Integer 

On Error GoTo GenericErrorHandler 

Set HostExplorer = CreateObject("HostExplorer") ' Initialize HostExplorer Object 
Set MyHost = HostExplorer.HostFromProfile("*****") ' Set object for the desired session 
If MyHost Is Nothing Then GoTo NoSession 

Dim ColALastRow As Long 
ColALastRow = Worksheets(1).Columns("A:A").End(xlDown).Row 
Dim Pro As String 
Dim MiscTest As String 
Dim iPSUpdateTimeout 

'enter pro then F2 and F9 

For i = 2 To ColALastRow 

    Pro = Worksheets(1).Cells(i, 1).Value 
    Rc = MyHost.Keys(Pro) 
    iPSUpdateTimeout = 60 
    MyHost.RunCmd ("Enter") 
    Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

    If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

    iPSUpdateTimeout = 60 
    MyHost.RunCmd ("PF2") 
    Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

    If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

    iPSUpdateTimeout = 60 
    MyHost.RunCmd ("PF9") 
    Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

    If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

    MiscTest = Mid(MyHost.Text, 1466, [3])   

    If MiscTest = "YES" Then 'test for Misc if true move to next screen 
     Rc = MyHost.Keys("v") 
     Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

     If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

     MyHost.RunCmd ("Tab") 
     Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

     If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

     Rc = MyHost.Keys("v") 
     Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

     If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

     MyHost.RunCmd ("Tab") 
     Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

     If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

    Else 

     MyHost.RunCmd ("PF1") 
     Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 

     If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

     MyHost.RunCmd ("PF1") 
     Rc = MyHost.WaitPSUpdated(iPSUpdateTimeout, True) 
     If Rc <> 0 Then GoTo OnWaitPSUpdatedTimeout 

     GoTo NextIteration 
    End If 

NextIteration: 
Next i 

Exit Sub 
+0

단순히 텍스트를 입력 하시겠습니까? 나는 ur 호스트가 무엇인지 모르겠다. 그러나 key() 메서드를 사용하여 입력 할 수있는 것처럼 보인다 !! Like : MyHost.Keys ("thevalueyouwanttoType") –

+0

MyHost.Keys ("thevalueyouwanttoType")는 문자열을 입력하는 데 작동하지만 의미가있는 경우 특정 위치에 입력하는 방법을 알아야합니까? 예를 들어, MiscTest = Mid (MyHost.Text, 1466, [3])는 해당 변수를 "location?"에서 시작하는 문자열과 동일하게 설정합니다. 내 hostexplorer에 1466입니다. Myhost.keys를 사용하기 전에 특정 위치로 어떻게 이동할 수 있습니까? – user2996913

+0

http://vbcity.com/forums/t/42741.aspx 도움이 될 수 있습니다. –

답변

0

당신이 허밍 버드 응용 프로그램 사용 위의 코드를 기록한 점을 감안하면 :

당신은 당신의 화면에서 위치를 찾았 으면

, 당신은 예를 들어, _________________ 특정에 변수를 전달할 수 있습니다; myHost.area(4,2,4,10) 당신이 입력 뭔가 원하는 위치

MyHost.Area(4,2,4,10) = "desired_text"

당신이 HostExplorer의 영역, 고토 직접 실행 창을 찾으려면 (보도 Ctrl 키를 + G)이며, 유형 ?MyHost.area(7,2,7,70)하고 Enter 키를 누릅니다 => 2는 시작 위치이고 70은 끝 위치입니다.

7 번째 줄에있는 텍스트 나 값을 두 번째 문자에서 70 번째 문자로 가져옵니다.

+0

정확히 내가 무엇을 찾고 있었는지, 감사합니다. – user2996913

0

코드에서 myHost에 시계를 넣고 .item.fields proriety를 확인하십시오. 그런 식으로 각 필드의 항목 번호를 찾을 수 있습니다. 그러면이 항목을 사용하여 입력 할 수 있습니다.

나는 내 앞에 코드가 없지만 MyHost.fields.item (78) = yourVariable 또는 "30s"을 예로 사용합니다.