アプリケーションはExcelファイルをtxtに変換します。私はそれぞれの行が一致することを確認する必要があります。以下はそのことを確認する関数ですが、txtファイルまたはExcelファイルから空文字列を返すことがあり、両方のファイルに行/行のテキストが含まれていることがあります。データベースからQTP:関数は、Excel /テキストファイルから空の文字列を返します
私は、ファイルやフォルダ名を取得するだけでなく、(田臥として)使用するシートをエクセル何
Function excelcomparison (ByRef ObjFolder, ByRef OrgFolder, ByRef originalfile, ByRef targetFile, ByRef TabUse)
print originalfile&":::"&TabUse&" -=VS=- "&targetFile
Dim fsox : Set fsox = CreateObject("Scripting.FileSystemObject")
Dim TargFileRead : Set TargFileRead = fsox.OpenTextFile(targetFile)
Dim OrgExcel : Set OrgExcel = CreateObject("Excel.Application")
'Application.DisplayAlerts = False
OrgExcel.Workbooks.Open(originalfile)
Set vSheet = OrgExcel.ActiveWorkbook.WorkSheets(TabUse)
For rc = 1 To vSheet.UsedRange.Rows.Count
For cc = 1 To vSheet.UsedRange.Columns.Count
vtext = (vSheet.cells(rc,cc))
If vstring="" Then
vstring=vtext
Else
vstring = vstring&vbTab&vtext
End If
Next
任意の先頭と末尾のタブの「トリム」:
Do
If Left(vstring , 1)=ChrW(9) Then
vstring = MID(vstring, 2)
Else
Exit Do
End If
Loop
Do
If RIGHT(vstring, 1)=ChrW(9) Then
vstring= REPLACE(RIGHT(vstring, 1),ChrW(9), ChrW(32))
vstring=Trim(vstring)
Else
Exit Do
End If
Loop
vstring = Trim(vstring)
いくつかの細胞Excelで結合され、2行以上の高さを持ちます。だから、それらは行とTXTラインをエクセルスキップ:
If len(vstring)>0 Then
TargFileText = TargFileRead.ReadLine
Do
If Left(TargFileText, 1)=ChrW(9) Then
TargFileText = MID(TargFileText, 2)
Else
Exit Do
End If
Loop
Do
If RIGHT(TargFileText, 1)=ChrW(9) Then
TargFileText = REPLACE(RIGHT(TargFileText, 1),ChrW(9), ChrW(32))
TargFileText=Trim(TargFileText)
Else
Exit Do
End If
Loop
TargFileStr = Trim(TargFileText)
If trim(vstring) = trim(TargFileStr) Then
' print "match"
Else
print "Not Match"
print "+"&trim(TargFileStr)
print "*"&trim(vstring)
End If
Else
print "Lenth=0"
End If
vstring = ""
vtext = ""
TargFileStr=""
Next
OrgExcel.ActiveWorkbook.Close
TargFileRead.Close
fsox = Nothing
TargFileRead = Nothing
vSheet = Nothing
OrgExcel = Nothing
End Function
問題1:それはいくつかのテキストを読んだり、ファイルをエクセルいない、ランダムに(エクセル/テキストファイルから空の文字列を返します)
問題2 :開かれたExcelを閉じず、膨大なメモリを消費する(検証するファイルは最大50ファイル)
質問:修正する必要があるのは何ですか?
ありがとうございました!私は絶対にlen(vstring)-1)を使用するとは思わなかった) Excelの文字列が空白でないときだけテキストを読む理由は、Excelの行が空の場合、ソフトウェアにはtxtファイルに空白行がありません。他のすべては良いです、thnx) – Salek
うれしかった:) – Gurman