トップ  >  サンプルソース  >  テキストファイル比較(VBS/VBA)

テキストファイル比較(VBS/VBA)

2010年02月20日

テキストファイルを比較して差分をファイルに出力するサンプル(ソース/コード)です。NonDiffVb6.dll を使っています。VB SCRIPTやVBA(このサンプルはEXCELを使用)でファイル比較結果が出力できます。VB SCRIPTやVBAなら.NETの開発環境が無くても自分専用のツールが作れます。VB SCRIPT(WSH)ってお手軽ですね。

このVBSサンプルは64bit(x64)版VBSではCreateObjectエラーになります。32bit(x86)版のWSH(C:\Windows\SysWow64\cscript.exe)を使用してください。

※ファイル比較関係のツールやサンプルはこちら「ファイル比較関係」です。

' ---------------------------------------------------------
' テキストファイル比較のサンプル(VBS)
' オブジェクト定義(事前準備:regsvr32 NonDiffVb6.dll)
Set objDiff = CreateObject("NonDiffVb6.NonDiffClassV")
Set fso = CreateObject("Scripting.FileSystemObject")

' テキストファイル1入力
Set txf = fso.OpenTextFile("d:\temp\fl1.txt", 1)
Do Until txf.AtEndOfStream = True
    tmp = txf.ReadLine
    dt1 = dt1 & tmp & vbCrLf
Loop
txf.Close

' テキストファイル2入力
Set txf = fso.OpenTextFile("d:\temp\fl2.txt", 1)
Do Until txf.AtEndOfStream = True
    tmp = txf.ReadLine
    dt2 = dt2 & tmp & vbCrLf
Loop
txf.Close

' テキストファイル比較
df = objDiff.NonDiff( _
    dt1, dt2, False, 2, 1, 1, "", "")

' テキストファイル比較結果を出力
Set txf = fso.CreateTextFile("d:\temp\df.txt", True)
For i = 1 To UBound(df, 2)
    txf.WriteLine df(0, i) & "," & _
        df(1, i) & "," & df(2, i) & "," & _
        df(3, i) & "," & df(4, i)
Next
txf.Close
' ---------------------------------------------------------

' ---------------------------------------------------------
' テキストファイル比較のサンプル(VBA)
Private Sub CommandButton1_Click()
  ' オブジェクト定義(事前準備:regsvr32 NonDiffVb6.dll)
  Set objDiff = CreateObject("NonDiffVb6.NonDiffClassV")
  Set fso = CreateObject("Scripting.FileSystemObject")

  ' テキストファイル1入力
  Set txf = fso.OpenTextFile("d:\temp\fl1.txt", 1)
  Do Until txf.AtEndOfStream = True
    tmp = txf.ReadLine
    dt1 = dt1 & tmp & vbCrLf
  Loop
  txf.Close

  ' テキストファイル2入力
  Set txf = fso.OpenTextFile("d:\temp\fl2.txt", 1)
  Do Until txf.AtEndOfStream = True
    tmp = txf.ReadLine
    dt2 = dt2 & tmp & vbCrLf
  Loop
  txf.Close

  ' テキストファイル比較
  df = objDiff.NonDiff( _
    dt1, dt2, False, 2, 1, 1, "", "")

  ' テキストファイル比較結果を出力
  Set txf = fso.CreateTextFile("d:\temp\df.txt", True)
  For i = 1 To UBound(df, 2)
    txf.WriteLine df(0, i) & "," & _
      df(1, i) & "," & df(2, i) & "," & _
      df(3, i) & "," & df(4, i)
  Next
  txf.Close
End Sub
' ---------------------------------------------------------
スポンサーサイト

ごみ箱整理(ツール) | トップページへ戻る | BINGでINDEXされない

このページのトップに戻る

コメント

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る