'テキストファイルの比較 '同じならTrue / 違うなら False Function DiffTxtFile(aFilepath1 As String, aFilepath2 As String) As Boolean DiffTxtFile = True ' 機能:2つのテキストファイルを比較する ' 【変数定義】 Dim file1(1) As String ' ファイル名(フルパス) Dim file2(1) As String ' ファイル名 Dim nFNO(1) As Integer 'ファイル番号 Dim buf(1) As String ' テキスト読み出し用バッファ Dim line_no(1) As Integer ' 行数 Dim str1 As String ' 文字列 Dim i As Integer ' 整数 ' ファイル名 file1(0) = aFilepath1 ' テキストファイル1のファイル名(フルパス) file1(1) = aFilepath2 ' テキストファイル2のファイル名(フルパス) ' ファイルが存在するか確認 For i = 0 To 1 If Dir(file1(i)) = "" Then MsgBox i & ": " & file1(i) & "が存在しません。" Exit Function End If Next For i = 0 To 1 ' 使用可能なファイル番号を調べる nFNO(i) = FreeFile() ' ファイルを開く Open file1(i) For Input As #nFNO(i) ' 行数を初期化 line_no(i) = 0 ' ファイル名から、パスを除く file2(i) = Dir(file1(i)) Next ' どちらかのファイルがEOFになるまで繰り返す Do Until EOF(nFNO(0)) Or EOF(nFNO(1)) For i = 0 To 1 Line Input #nFNO(i), buf(i) ' 1行ずつ読み出す line_no(i) = line_no(i) + 1 ' 行番号を1増やす ' 1行ずつ比較 If i = 1 And StrComp(buf(0), buf(1), vbTextCompare) <> 0 Then DiffTxtFile = False MsgBox line_no(0) & "行目が異なります。" & vbCrLf _ & file2(0) & "=" & buf(0) & vbCrLf _ & file2(1) & "=" & buf(1) GoTo label_escape End If Next Loop ' 行数が異なるか? If EOF(nFNO(0)) <> EOF(nFNO(1)) Then For i = 0 To 1 If EOF(nFNO(i)) = False Then Do Until EOF(nFNO(i)) Line Input #nFNO(i), buf(i) ' 1行ずつ読み出す line_no(i) = line_no(i) + 1 ' 行番号を1増やす Loop End If Next DiffTxtFile = False MsgBox "行数が異なります。" & vbCrLf _ & file2(0) & "=" & line_no(0) & vbCrLf _ & file2(1) & "=" & line_no(1) GoTo label_escape End If label_escape: ' ファイルを閉じる For i = 0 To 1 Close #nFNO(i) Next End Function