我尝试从.csv文件中读取数据并将其粘贴到3270终端屏幕上,同时将这些尝试的结果写入到与.csv完全对应的excel文件中
我已经创建了读取.csv文件并将值粘贴到3270屏幕上的代码。但是在excel中很难引用精确的行/行来写入结果
这是我的循环:
strLine = objFile.ReadLine
Do Until objFile.AtEndOfStream
arrFields = Split(strLine,",")
subDoWork (strLine)
strLine = strLine + 1
Loop
然后,subDoWork读取.csv并粘贴数据:
Sub subDoWork(strLine)
ColumnA = arrFields(0)
ColumnB = arrFields(1)
subMoveCursor 1, 10
subEnterData ColumnA
If (funcReadScreen(12,27,1) <> "0") Then
oExcelObject.Cells(3).Value = "Skipped SAF1"
oExcelObject.DisplayAlerts = False
ExcelWorkbook.Save
End If
End Sub
我在这里创建对象,并在获取扩展文件时设置变量:
Set oExcelObject = CreateObject("Excel.Application")
Set oFileObject = CreateObject("Scripting.FileSystemObject")
Sub subExternalFile
rw = 2
strFilter = ""
strExternalFilePath = funcSolicitFile(strFilter)
strExternalFilePath1 =
"\\DAYFS02\mortvc$\_Scripts_Custom\DisasterScript_OutPut.xlsx"
Set objFile = oFileObject.OpenTextFile(strExternalFilePath)
Set oExcelFile = oFileObject.GetFile(strExternalFilePath1)
strExcelFileName = oExcelFile.Name
Set oExcelObject = GetObject("","Excel.Application")
Set ExcelWorkbook =
oExcelObject.Workbooks.Open(strExternalFilePath1)
Set oExcelSheet = ExcelWorkbook.Sheets(1)
oExcelObject.Application.Visible = False
End Sub
我希望从文本文件的第1行开始读取。要读取arrfield(0)和arrfield(1),只需两列,然后将该数据粘贴到3270屏幕上。如果屏幕上显示了特定的内容,则写入到C (3)列中的excel文件的第1行。然后移动到第2行,执行相同的操作,读取.csv文件,然后写入excel文件中相应行号的第(3)列。
当它试图写入excel文件时,我得到的错误是找不到该对象。尽管我正在创建对象。当我试图计算strLine时,我也得到了一个“类型不匹配”的错误,以便我可以移动到下一行/行。
-编辑2019年5月29日-我让它工作了。我能够在.csv文件中从一行移动到另一行并粘贴到屏幕上。但是,在写入excel时,每次都会覆盖C列(第2行,第一行是标题)。我不能让它根据.csv的第3行的结果写入excel的第3行C列。我也没有将.csv的第一行标识为标题,事实上,我从.csv中删除了标题,但仍然将标题保留在excel文件中(第1行)。因此,从技术上讲,.csv中的第1行是excel中的第2行。我不确定是否需要在第一个循环中放置一个循环,以便计算excel中的行数,并确保根据.csv中的行将数据写入excel中的正确行。非常感谢您的帮助。
发布于 2019-05-29 14:00:05
由于您正在尝试将整数(1)添加到此行中的字符串,因此您得到的类型不匹配。
strLine = strLine + 1
如果您想要跟踪您正在处理的行,则需要暗显一个新的行计数器变量。您还需要读取循环中的行,否则将以无限循环结束。
如下所示:
dim i
i = 0
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
arrFields = Split(strLine,",")
subDoWork strLine
i = i + 1
Loop
https://stackoverflow.com/questions/56350389
复制相似问题