Я работаю с эмулятором терминала мейнфрейма HostExplorer. Мои знания VBA основаны на объединении кусочков информации, которую я нашел в Интернете, для создания других макросов.
Я делаю макрос, чтобы ввести счет в мэйнфрейм, перемещаться между несколькими экранами, вводить информацию, которая будет генерировать ссылку, а затем использовать эту ссылку для сохранения файла в заранее определенную папку на моем компьютере.
Я застрял в части ввода информации. После перехода к последнему экрану мне нужно ввести текст в определенные поля мейнфрейма.
Я знаю, как определить местоположение на экране и использовать его для создания переменных.
Как я могу сделать обратное, ввести строку, хранящуюся в переменной (или просто случайную букву), в определенное место на экране?
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
host.fields(x).text
- person Nathan_Sav   schedule 20.01.2017