- ベストアンサー
VBSによるCSVの比較方法と可変なファイル名の取り扱い
- VBSを使用してCSVファイルを比較する方法について説明します。また、可変なファイル名の取り扱い方法も解説します。
- CSVファイルを2つ順に呼び出して、配列に格納する方法について説明します。そして、配列を比較して違いがあればテキストに書き込む方法も解説します。
- for文を使用して配列を比較し、違いがあればテキストに書き込む方法について説明します。比較するCSVファイルの名前が可変な場合でも問題ありません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>名前が可変なときのため、そのパスにあるCSV2個を順に呼び出すにはどうすればよいのでしょうか。 フォルダ内の全ファイルから拡張子がCSVなものを検索するしか無いかと。 しかも、同じフォルダ内に別のCSVファイルがあるとちゃんと比較することが出来ないため、比較したいCSVファイル以外は無視するようにする必要があります。 http://officetanaka.net/excel/vba/tips/tips36.htm ファイルの検索方法については上記あたりを参考に。 >以下のような構文の場合、比較で違ったときテキストに書き込みとなりますでしょうか? For i = 0 to 10 If a(i) = b(i) Then '書き込み処理 EndIf Next i 大体合ってますが、こんな感じにした方がいいかと。 For文のStep 1については省略可能ですし、文字列の比較は=でも可能ですよ。 ただ、=での比較はアルファベットの大文字小文字が違うだけでも違う内容だと判断されるため、大文字小文字を問わずに比較したい場合はStrcomp関数を使った方が良いかも。 ちなみに、2つのファイルを読み込んだ配列の要素数が可変の場合はUBound関数を使うと良いですよ。 num = UBound(a)でnumの中にA配列の要素数が入ります。 同様に、num = UBound(b)だとB配列の要素数です。
その他の回答 (1)
- bajutsu
- ベストアンサー率20% (139/693)
先日、他の方も言っておられましたが、ちょっとは自分で調べたら? VBScriptのリファレンスをちょろっと読むだけで出てくるような 低レベルな質問ばっかりなんですが。 こんなところで、たまたま親切な人が通りかかって 回答をくれるのを待つよりも、よっぽど早いし確実ですよ。 FileSystemObjectの GetFolder に対象のフォルダのパスを指定して フォルダオブジェクトを取得します。 フォルダオブジェクトの Filesコレクション をFor Each で回せば 特定のフォルダ内のファイルをひとつづつ処理できます。 このとき、拡張子がcsvを判定して、ループを抜けるようにしないと どうでもいいファイルも処理するので気をつけてください。 ま、そのフォルダ内のファイルは全部csvという前提なら別に構いませんが。 csvが3個以上あった場合とか、 実際の処理でファイルの入力順序を意識する必要があるのか?ないのか?とか いろいろ気になる部分はありますが・・・
お礼
調べてからの確認です。 プログラム自体初心者なので、リファレンスを読んでも自分のやりたい関数はどれを使用すれば実現できるのかなどなかなかわからないわけです。 すいません。 CSVは2個限定なのですが、 読み込む順番はどうなるのでしょうか。どちらを先に読み込むかがきになります。