現在の問題:
ターゲットは、.csv の各行の値を Excel シート列の値に一致させ、それに基づいてコピーを正しいセルに作成することに基づいて、ソース .csv ファイルからターゲット Excel シートにデータをコピーすることです。エクセルシート。
ループ内の .csv ファイルから配列に値を収集し、配列内の値の 1 つを対象の 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