
No.11ベストアンサー
- 回答日時:
#10
改行も1文字として数えるので、ファイルの最後は改行せずに試してみてください^-^
If EOF(1) And EOF(2) Then
このIf文は、
ファイル1及びファイル2から読み込む文字がなくなったときに真になるけれど、最後の文字の一致/不一致まで言及していないのです。^-^;
↓
If EOF(1) And EOF(2) And MyChar1 = MyChar2 Then
これだと、
ファイル1及びファイル2から読み込む文字がなくなり、かつ、最後の文字も一致しているときに真になります。
No.10
- 回答日時:
#8
最後の1文字が違うとき、同じと判定されていました^-^;
訂正です。
If EOF(1) And EOF(2) Then
↓
If EOF(1) And EOF(2) And MyChar1 = MyChar2 Then
この回答への補足
何度もありがとうございます。
少数のデータで試しましたが、以下のコードで最後の1文字違いも判別するようですが、If EOF(1) And EOF(2) ThenでなくIf EOF(1) And EOF(2) And MyChar1 = MyChar2 Thenの意味はなんでしょう?
Sub CSVデータ比較()
Dim MyChar1 As String
Dim MyChar2 As String
Dim FName1 As Variant
Dim FName2 As Variant
Res = MsgBox("データを比較する2つのCSVファイルを選びます。 " & vbCr & _
"" & vbCr & _
"続行しますか?", vbYesNo + vbQuestion, "確認")
If Res = vbNo Then
MsgBox "中止します。 ", , "中止"
Exit Sub
End If
FName1 = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv")
If FName1 = False Then
MsgBox "中止します。", , "中止"
Exit Sub
Else
End If
MsgBox FName1 & "を選択しました。 " & vbCr & _
"比較対象するファイルを選択してください。 ", , "対象選択"
FName2 = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv")
If FName2 = False Then
MsgBox "中止します。", , "中止"
Exit Sub
Else
MsgBox FName1 & "と " & vbCr & _
FName2 & "の" & vbCr & _
"データを比較します。", vbInformation, "比較開始"
Open FName1 For Input As #1
Open FName2 For Input As #2
Do Until EOF(1) Or EOF(2)
MyChar1 = Input(1, #1)
MyChar2 = Input(1, #2)
If MyChar1 <> MyChar2 Then Exit Do
n = n + 1
Loop
If EOF(1) And EOF(2) Then
MsgBox "データ" & n & "個(カンマを含む)は完全一致です。", , "終了"
Else
MsgBox "データが異なりました。 " & vbCr & _
"カンマを含み、" & n & "個目で最初の不一致を確認しました。 ", , "終了"
End If
Close #1
Close #2
End If
End Sub
No.9
- 回答日時:
> とりあえずは同じかどうかだけでいいのです。
> FilsSystemObject の ReadAll メソッドというものを存じませんので・・・。
ReadAll メソッド
http://www.microsoft.com/japan/msdn/library/ja/s …
こちらが参考になると思います。
ただ、↑にも書いてありますが、csvファイルのサイズが大きければ、使えませんが (^^ゞ
No.8
- 回答日時:
vbaで
txtデータが同じかどうか調べたいということならば、こんな感じになります^-^?
Option Explicit
Public Sub Aaa()
Dim MyChar1 As String
Dim MyChar2 As String
Open "c:\temp\1.csv" For Input As #1
Open "c:\temp\2.csv" For Input As #2
Do Until EOF(1) Or EOF(2)
MyChar1 = Input(1, #1)
MyChar2 = Input(1, #2)
If MyChar1 <> MyChar2 Then Exit Do
Loop
If EOF(1) And EOF(2) Then
Debug.Print "OK"
Else
Debug.Print "違うよ^-^"
End If
Close #1
Close #2
End Sub
ご教示をもとに下記のように作りました。
ちゃんと作動するようですが、穴がないか、またはアドバイスがありましたら教えていただけたら幸いです。
Sub CSVデータ比較()
Dim MyChar1 As String
Dim MyChar2 As String
Dim FName1 As Variant
Dim FName2 As Variant
Res = MsgBox("比較用する2つのファイルを選びます。 " & vbCr & _
"続行しますか?", vbYesNo + vbQuestion, "確認")
If Res = vbNo Then
MsgBox "中止します。 ", , "中止"
Exit Sub
End If
Dim FName1 As Variant
FName1 = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv")
If FName1 = False Then
MsgBox "中止します。", , "中止"
Exit Sub
Else
End If
MsgBox FName1 & "を選択しました。 " & vbCr & _
"比較対象するファイルを選択してください。 ", , "対象選択"
Dim FName2 As Variant
FName2 = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv")
If FName2 = False Then
MsgBox "中止します。", , "中止"
Exit Sub
Else
MsgBox FName1 & "と " & vbCr & _
FName2 & "の" & vbCr & _
"データを比較します。", vbInformation, "比較開始"
Open FName1 For Input As #1
Open FName2 For Input As #2
Do Until EOF(1) Or EOF(2)
MyChar1 = Input(1, #1)
MyChar2 = Input(1, #2)
n = n + 1
If MyChar1 <> MyChar2 Then Exit Do
Loop
If EOF(1) And EOF(2) Then
MsgBox "データ" & n & "個(カンマを含む)は同一でした。", , "終了"
Else
MsgBox "データ異なりました。", , "終了"
End If
Close #1
Close #2
End If
End Sub
No.7
- 回答日時:
(1)普通ビジネスでファイルが同じかどうか問題にするのはキー(例えば社員コードのようなもの)で、AとBファイルの同一の2レコードについてキー以外の項目を比較します。
このキーに当たるものがAとBファイルにありますか。
(2)無ければ、Aファイルの1番目のレコードとBファイルの1番目のレコード(以下2番と2番、以下繰り返し)で比較せねばなりませんが、それで意味がありますか。Bファイルに1レコード挿入されただけでも他のレコードが全く同じでも挿入レコード以後はすべて不一致になります。そう言う事態は考えられないのでしょうか。
(1)については、A,Bファイルをキー順にソートして
マッチングのアルゴリズムで処理するのが易しく、処理時間が早いと思います。オフラインバッチ処理の定番です。
普通は(2)は既製ソフト(ファイルコンペア)を見つけるのが良いのではないでしょうか。
>、いずれはVBAで処理しようと
プログラムはマッチングのアルゴリズムなら比較的簡単ですが、他の方法では、人によってはそこまで速く達するが、近くにアドバイザなどいないと、一般には難しいものですよ。
ありがとうございます。
> Bファイルに1レコード挿入されただけでも他のレコードが全く同じでも挿入レコード以後はすべて不一致になります。そう言う事態は考えられないのでしょうか。
今回はこれは想定外でしたが、今後はそういうこともありますね。そのときのために既成ソフトがあるということですね。勉強になりました。
No.3
- 回答日時:
テキストで
「FC ファイル名.csv ファイル名2.csv > kekka.txt」
で保存。(1.txtとする)
1.txtを1.batに変更。
3ファイルを同じ場所においてbatをダブルクリック。
kekka.txtに違う場所が表示されます。
あとこれは 完全一致でないと使えません(・・;)
この回答への補足
ありがとうございます。
>「FC ファイル名.csv ファイル名2.csv > kekka.txt」
で保存。(1.txtとする)
意味がよくわからないのですが、「」内が拡張子を含んだファイル名ですか?(1.txtとする)ってどういう意味でしょうか?
> 1.txtを1.batに変更。
拡張子を変えるということですか?
No.2
- 回答日時:
ファイルを比較するための下記のようなソフトが有ります。
CSVなら、拡張子をTXTに変更すれば問題なく動作するはずです。
参考URL:http://www.vector.co.jp/soft/win95/util/se110502 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 お世話になっています. x軸は時間(期間)y軸はある値に対する2つのグラフ比較をしますが、私個人の考 2 2023/03/30 11:42
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- その他(悩み相談・人生相談) 他人と比較みじめ 5 2023/05/17 06:14
- システム 「パソコンA」から「パソコンB」にインターネット経由で ファイルを送りたいとき 4 2023/01/11 14:14
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
htmlを置換する方法とjsp表示
-
テキストファイルの最終行を削...
-
複数のファイルからのデータの...
-
C言語でテキストファイルに文...
-
複数ファイルによる共通の外部...
-
csvファイルを開かずに文字を検...
-
ドラッグアンドドロップでファ...
-
2つのファイルを比較するC言語...
-
CSVファイルへの保存の際、デー...
-
画像読み込み時のOutOfMemory
-
「VBS」の「MsgBox」につ...
-
FILEポインタ配列の動的生成
-
COM相互運用機能のON,OFFによる...
-
symantec社の製品名及び機能の違い
-
VB.netでTIFFファイルの読み込...
-
「JAVAプログラミング」空白の...
-
Iniファイルを使用したAccessVB...
-
fopen 中のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
バッチで118項目のCSVを処理し...
-
CSVファイルへの保存の際、デー...
-
グローバル変数のよくない使い...
-
テキストファイルの最終行を削...
-
ドラッグアンドドロップでファ...
-
VB.NETによるプロセス間通信
-
VBAにてEXCEL以外のファイル(テ...
-
分割コンパイルの#defineについて
-
ファイルの結合
-
iniファイルに追記がしたいです。
-
動画処理のライブラリについて
-
VBに、Cのincludeのようなもの...
-
Cでのネットワークファイルの読...
-
ダイアログボックスで複数フォ...
-
C言語のfopenについて教えてく...
-
「VBScript」ADODB.Streamにお...
-
マウスポインタの変更
おすすめ情報