当前问题:
目标是将数据从源 .csv 文件复制到目标 excel 表,基于将 .csv 的每一行中的值与 excel 表列中的值匹配,然后根据该值复制到正确的单元格中excel表。
我正在循环中从 .csv 文件将值收集到数组中,将数组中的一个值与目标 excel 工作表列 A 中的值进行比较,如果发生匹配,则将复制数组中的所有值到 Excel 工作表中的相应行。
尝试将 excel 工作表的单元格值与数组值进行比较时,我现在收到“类型不匹配”错误。
以下是代码的相关位:
sfile="\\DFSpath\file1.csv"
smaster="\\DFSpath\file2.xlsx"
set xlapp = createobject("excel.application")
set wbtarget = xlapp.workbooks.open(smaster)
set tgtworksheet = wbtarget.worksheets("sheet1")
set usedRowsXP = tgtworksheet.UsedRange.Rows
dim fs,objTextFile
set fs=CreateObject("Scripting.FileSystemObject")
dim arrStr
set objTextFile = fs.OpenTextFile(sfile)
Do while NOT objTextFile.AtEndOfStream
arrStr = split(objTextFile.ReadLine,",")
for each oRow in usedRowsXP
Introw = oRow
If tgtworksheet.cells(Introw,1).value = arrStr(2) Then
tgtworksheet.cells(Introw,4).value = arrStr(0)
tgtworksheet.cells(Introw,5).value = arrStr(1)
tgtworksheet.cells(Introw,6).value = arrStr(2)
End If
next
Loop
通过修改代码修复如下:
dim fs,objTextFile
set fs=CreateObject("Scripting.FileSystemObject")
dim arrStr
set objTextFile = fs.OpenTextFile(sfile)
'##Replace quotation marks with nothing in .csv##
strText = objtextFile.ReadAll
objTextFile.Close
strNewText = Replace(strText, """", "")
Set objtextFile = fs.OpenTextFile(sfile, 2)
objtextFile.Write strNewText
objtextFile.Close
set objTextFile = fs.OpenTextFile(sfile, 1)
'##Gather array out of line in .csv + compare user's name to name in excel sheet, if matches, copy data, repeat for each line##
Do while NOT objTextFile.AtEndOfStream
arrStr = split(objTextFile.ReadLine,",")
for each oRow in usedRowsXP
Introw = oRow.row
If Cstr(tgtworksheet.cells(Introw,1).value) = arrStr(2) Then
tgtworksheet.cells(Introw,4).value = arrStr(0)
tgtworksheet.cells(Introw,5).value = arrStr(1)
tgtworksheet.cells(Introw,6).value = arrStr(2)
End If
next
Loop