0
VBAでは、2つのバージョンのテキストファイルを比較し、一致しない行を出力する必要があります。ただし、追加の(ユーザーが指定した)行が最新のテキストファイルに追加されている場合、この行は無視しなければならず、比較は最新のテキストファイルの次の行から続行する必要があります。テキストファイルはかなり大きく、ReadAllプロパティは使用できません。 これまでは、各テキストファイルに同じ数の行があり、その順序は同じであると仮定していたため、すべての行をループするために最初のテキストファイルのみを使用しました。VBA StreamReaderでラインをスキップする方法
Dim JsonPrev, JsonCurr As String 'Names of the text files
Dim strLinePrev , strLineCurr As String 'The file text
Dim UserLineAdded As String
LineAdded = MsgBox("Does the most recent JSON contain an additional input/output, which the first does not?", vbYesNo, "Alert!")
If LineAdded <> vbNo Then
UserLineAdded = InputBox("Please provide the line that was added" & vbNewLine & "E.g. INPUT AdjustToDate, or OUTPUT Surrender Charge Base")
If UserLineAdded = vbNullString Then
MsgBox ("Comparison cancelled.")
Exit Sub
End If
End If
JsonPrev = Range("JSONPrevious").Value 'First Text File name
JsonCurr = Range("JSONCurrent").Value 'Second Text File name
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFilePrev = objFSO.OpenTextFile(JsonPrev, 1)
Set objFileCurr = objFSO.OpenTextFile(JsonCurr, 1)
DiffCount = 0
Do Until objFilePrev.AtEndOfStream
strLinePrev = objFilePrev.ReadLine
StrLineCurr = objFileCurr.ReadLine
prevLineNumber = prevLineNumber + 1
currLineNumber = currLineNumber + 1
If prevLineNumber > 0 Or currLineNumber > 0 Then
'Check whether a Line was added
If InStr(1, UCase(StrLineCurr), UCase(UserLineAdded)) Then
currLineNumber = currLineNumber + 1
'*****Add code to update StrLineCurr to the next ReadLine*****
End If
If strLinePrev <> StrLineCurr Then
DiffCount = DiffCount + 1
'code to print both lines from different sources
End If
End If
End If
Loop
objFilePrev.Close
objFileCurr.Close
助けてください。