Запись данных в строку Excel по строке
В настоящее время я запускаю скрипт, который циклически перебирает электронную таблицу Excel, считывает данные из Excel и обновляет экран в эмуляторе 3270. Цикл завершается с использованием следующей процедуры:
Sub Main
subGetSession
subGoToScreen "DELP", "********", "0000000001"
Dim rw
Dim TITLE
TITLE = "Script Completion Confirmation"
Set atlDirectorObject = CreateObject("atlDirectorObject.atlDirector")
Set objExcel = createobject("Excel.Application")
Set objExcelWb = objExcel.Workbooks.Open
("S:\Scripting\0711_Settlement2.xlsx")
Set objExcelSht = objExcelWb.Worksheets("Test")
Set oFileObject = CreateObject("Scripting.FileSystemObject")
rw = 2
objExcel.Visible = True
Do While objExcel.CountA(objExcelSht.Rows(rw)) > 0
subDoWork objExcelSht.Rows(rw)
rw = rw + 1
If (Err.Number <> 0) Then
On Error GoTo 0
WScript.Echo "Script Has Been Terminated"
WScript.Quit
End If
On Error GoTo 0
Loop
MsgBox "End of Worksheet Has Been Reached" & Chr(13) & "" & Chr(13) & "Script Completed!", vbOkOnly, TITLE
End Sub
Я могу вставить данные, которые читает цикл в экран 3270, используя процедуру subDoWork
, Я использую столбцы от A до L в электронной таблице Excel и subDoWork
может перемещаться по электронной таблице строка за строкой, копировать и вставлять данные из Excel на экран 3270. Ниже приведен пример того, что я использую для ввода данных на экран 3270 из столбца B электронной таблицы Excel:
subMoveCursor 11, 5
subEnterData rw.Cells(2).Value
Затем, после вставки данных, я использую funcReadScreen
чтобы прочитать экран в 3270 и создать всплывающее окно с результатом, который я получаю из данной строки из Excel.
Sub subErrorHandle
If funcReadScreen(24,2,37) = "A TRANSFER IS ALREADY PENDING" Then
subErrorHandle_TransferPending
Else
If funcReadScreen(24,2,27) = "INVALID NUMBER" Then
subErrorHandle_InvalidNumber
End If
End If
End Sub
То, что я хочу сделать, это использовать функцию funcReadScreen
записать этот результат в столбец M в Excel. В настоящее время я читаю столбцы A - L и хотел бы ввести результат, полученный от funcReadScreen, в столбец M в Excel на основе данных в данной строке.
Это означает, что эта ошибка должна быть вставлена в столбец M для этой строки, а затем перейти к следующей строке, и если другой результат / ошибка передается через funcReadScreen
, затем вставьте этот результат / ошибку в столбец M для этой строки и перейдите к следующей строке, пока не закончите. Итак, если я получаю ошибку "Invalid Number" через функцию чтения с экрана, я хочу записать этот результат в столбец M для этой строки.
В настоящее время я использую следующую подпрограмму, чтобы попытаться это, но она не работает:
Sub subWriteToExcel2
Dim objExcel, objExcelWb, objExcelSht
Set objExcel = GetObject(, "Excel.Application")
Set objExcelWb = objExcel.ActiveWorkbook("0711_Settlement2.xlsx")
Set objExcelSht = objExcel.ActiveWorkbook.Worksheets("Test")
If funcReadScreen(24,2,27) = "*** INVALID NUMBER ***" Then
objExcelSht.Cells(2,13).Value = "Invalid Number"
End If
End Sub
Кто-нибудь может помочь?
Изменить: То, что, кажется, не работает, это то, что я не могу "получить" объект Excel, как кажется. Я получаю ошибку
объект не поддерживает это свойство или метод: objExcel.ActiveWorkbook
Тем не менее, мне нужно это не только вставить значение в objExcelSht.Cells(2,13).Value
(или строка 2, столбец M), но затем перейти с циклом и ВСЕГДА вставить в столбец M, основываясь на моем If
заявление с чем funcReadScreen
идентифицирует.
1 ответ
Поработав над этой проблемой пару дней, я смог ее решить. Я просто добавил следующий оператор IF в конец основного кода, и он отлично работает. Спасибо за помощь.
If funcReadScreen(24,2,27) = "INVALID NUMBER" Then
rw.Cells(13).Value = "Invalid Number"