逐行写入数据 Excel
Write Data To Excel Row By Row
我目前 运行 一个脚本,它逐行循环遍历 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:\Scripting11_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
我可以使用过程 subDoWork
将循环读取的数据粘贴到 3270 屏幕中。我在 Excel 电子表格中使用 A 至 L 列,subDoWork
能够逐行向下查看电子表格,并将 Excel 中的数据复制并粘贴到 3270 屏幕上。下面是我用来从 Excel 电子表格的 B 列将数据输入到 3270 屏幕的示例:
subMoveCursor 11, 5
subEnterData rw.Cells(2).Value
然后在粘贴数据后,我使用 funcReadScreen
读取 3270 中的屏幕并生成一个弹出窗口,其中包含我从 Excel.[=24 的给定行收到的结果=]
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
将该结果写入 Excel 中的 M 列。我目前正在阅读 A - L 列,并希望根据给定行中的数据将从 funcReadScreen 收到的结果输入到 Excel 中的 M 列。
意思是,该错误应该粘贴到该行的 M 列,然后转到下一行,如果通过 funcReadScreen
给出了不同的 result/error,则粘贴那个 result/error 进入该行的 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
有人可以帮忙吗?
编辑: 似乎不起作用的是我无法 "get" Excel 对象。我收到错误
object doesn't support this property or method: objExcel.ActiveWorkbook
但是,我需要它不仅将值粘贴到 objExcelSht.Cells(2,13).Value
(或第 2 行,M 列),而且随后随着循环移动并始终粘贴到 M 列,基于我的 If
语句与 funcReadScreen
标识的内容。
经过几天处理这个问题后,我终于解决了这个问题。我只是在主代码的末尾添加了以下 IF 语句,效果很好。感谢您的协助。
If funcReadScreen(24,2,27) = "INVALID NUMBER" Then
rw.Cells(13).Value = "Invalid Number"
我目前 运行 一个脚本,它逐行循环遍历 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:\Scripting11_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
我可以使用过程 subDoWork
将循环读取的数据粘贴到 3270 屏幕中。我在 Excel 电子表格中使用 A 至 L 列,subDoWork
能够逐行向下查看电子表格,并将 Excel 中的数据复制并粘贴到 3270 屏幕上。下面是我用来从 Excel 电子表格的 B 列将数据输入到 3270 屏幕的示例:
subMoveCursor 11, 5
subEnterData rw.Cells(2).Value
然后在粘贴数据后,我使用 funcReadScreen
读取 3270 中的屏幕并生成一个弹出窗口,其中包含我从 Excel.[=24 的给定行收到的结果=]
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
将该结果写入 Excel 中的 M 列。我目前正在阅读 A - L 列,并希望根据给定行中的数据将从 funcReadScreen 收到的结果输入到 Excel 中的 M 列。
意思是,该错误应该粘贴到该行的 M 列,然后转到下一行,如果通过 funcReadScreen
给出了不同的 result/error,则粘贴那个 result/error 进入该行的 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
有人可以帮忙吗?
编辑: 似乎不起作用的是我无法 "get" Excel 对象。我收到错误
object doesn't support this property or method: objExcel.ActiveWorkbook
但是,我需要它不仅将值粘贴到 objExcelSht.Cells(2,13).Value
(或第 2 行,M 列),而且随后随着循环移动并始终粘贴到 M 列,基于我的 If
语句与 funcReadScreen
标识的内容。
经过几天处理这个问题后,我终于解决了这个问题。我只是在主代码的末尾添加了以下 IF 语句,效果很好。感谢您的协助。
If funcReadScreen(24,2,27) = "INVALID NUMBER" Then
rw.Cells(13).Value = "Invalid Number"