Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2992 / 13644 ツリー ←次へ | 前へ→

【64706】VBAで業務を自動化したい 電池切れ 10/3/9(火) 22:19 質問[未読]
【64707】Re:VBAで業務を自動化したい かみちゃん 10/3/9(火) 22:38 発言[未読]
【64708】Re:VBAで業務を自動化したい 電池切れ 10/3/9(火) 22:45 発言[未読]
【64709】Re:VBAで業務を自動化したい かみちゃん 10/3/9(火) 22:51 発言[未読]
【64710】Re:VBAで業務を自動化したい 電池切れ 10/3/9(火) 23:10 発言[未読]
【64711】Re:VBAで業務を自動化したい かみちゃん 10/3/9(火) 23:34 発言[未読]
【64712】Re:VBAで業務を自動化したい 電池切れ 10/3/9(火) 23:43 発言[未読]
【64713】Re:VBAで業務を自動化したい かみちゃん 10/3/9(火) 23:49 発言[未読]
【64715】Re:VBAで業務を自動化したい 超初心者 10/3/10(水) 9:32 発言[未読]
【64736】Re:VBAで業務を自動化したい 電池切れ 10/3/10(水) 18:37 発言[未読]
【64735】Re:VBAで業務を自動化したい 電池切れ 10/3/10(水) 18:00 発言[未読]
【64739】Re:VBAで業務を自動化したい かみちゃん 10/3/10(水) 20:44 発言[未読]
【64740】Re:VBAで業務を自動化したい 電池切れ 10/3/10(水) 22:19 発言[未読]
【64741】Re:VBAで業務を自動化したい かみちゃん 10/3/10(水) 23:02 発言[未読]
【64742】Re:VBAで業務を自動化したい 電池切れ 10/3/10(水) 23:12 発言[未読]
【64873】VBAで業務を自動化できました(解決) 電池切れ 10/3/23(火) 0:04 お礼[未読]

【64706】VBAで業務を自動化したい
質問  電池切れ  - 10/3/9(火) 22:19 -

引用なし
パスワード
   皆様初めまして。

普段の業務をExcel VBAを用いて省力化出来ないかと思い、色々と情報を探して居て
こちらの質問箱に辿り着きました。

現在、週に一度の業務として「ユーザ登録及び削除」と言う業務を行って居りますが、
これの登録削除に関して、今までは作業後にdiffを用いて差分を抽出して目視での
確認を行っておりました。

これをExcel VBAを用いて差分情報をテキスト保存した物を、登録削除作業の際に
利用しているExcelファイルのデータと比較する方法が無いかと考えております。

登録時に利用しているデータは「ユーザアカウント」「UserID」「表示名」の3項目で
相違点が有る際には、その項目名と相違箇所を表示するようにしたいのです。

職場にVBAの出来る方も以前は居たのですが、派遣切りと言うので2月一杯でその方が
私たちの職場を離れて仕舞ったので、私がVBAのお勉強をする事と成りました。

先達の皆様のお知恵を拝借出来ればと思います。

どうぞ宜しくお願いいたします。

【64707】Re:VBAで業務を自動化したい
発言  かみちゃん E-MAIL  - 10/3/9(火) 22:38 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>これをExcel VBAを用いて差分情報をテキスト保存した物を、登録削除作業の際に
>利用しているExcelファイルのデータと比較する方法が無いかと考えております。
>
>登録時に利用しているデータは「ユーザアカウント」「UserID」「表示名」の3項目で
>相違点が有る際には、その項目名と相違箇所を表示するようにしたいのです。

質問をもう少し具体的にされたほうがいいと思います。

サンプルデータを用いて、Excelのシート上は、どのようになっていて、

    A       B   C   D
1 ユーザアカウント UserID 表示名
2
3

テキストファイルは、どのようになっていて、
相違点は、どこにどのように出力(または表示)したいのでしょうか?

【64708】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/9(火) 22:45 -

引用なし
パスワード
   かみちゃんさん、こんばんわ

▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>質問をもう少し具体的にされたほうがいいと思います。

はい、申し訳有りません、必要な情報を書き忘れ過ぎていました。

>    A       B   C   D
>1 ユーザアカウント UserID 表示名
>2
>3

登録削除時に利用しているデータは、まさに上記の様な配列を利用しております。
これらが250〜300件ありまして、目視で確認するのが辛くなって来たのが事の始まりです。

>テキストファイルは、どのようになっていて、
>相違点は、どこにどのように出力(または表示)したいのでしょうか?

テキストファイルは、上記の順序でタブ区切りで出力されております。
相違点を表示する方法としては、複数箇所に誤りが有った場合を考えると、
ポップアップでは無く、追加で読込んだデータの後ろに○や×で表示したら
良いのでは無いかと考えました。

Excel2003を利用して居ます。

【64709】Re:VBAで業務を自動化したい
発言  かみちゃん E-MAIL  - 10/3/9(火) 22:51 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 必要な情報を書き忘れ過ぎていました。

何かサンプルデータを示して、ご説明いただくことはできませんでしょうか?

【64710】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/9(火) 23:10 -

引用なし
パスワード
   かみちゃんさん、こんばんわ

▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>> 必要な情報を書き忘れ過ぎていました。
>
>何かサンプルデータを示して、ご説明いただくことはできませんでしょうか?

アカウント名とUserIDと表示名は全て1byte文字で下記の様なデータに成ります。

アカウント名例:Battery(最大24文字)

UserID例:12345(5桁固定です)

表示名例:denchi(最大24文字)

diffで出力されてくるのは、登録削除作業前のユーザデータとの差分で、CSVで流し込んだデータを用いて作業を行うのですが、その作業を行う前のデータとの差分で、登録削除作業との差分を取り出しています。

質問がハッキリ出来ていないで申し訳有りません。

【64711】Re:VBAで業務を自動化したい
発言  かみちゃん E-MAIL  - 10/3/9(火) 23:34 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>> 必要な情報を書き忘れ過ぎていました。
>>
>>何かサンプルデータを示して、ご説明いただくことはできませんでしょうか?
>
>アカウント名とUserIDと表示名は全て1byte文字で下記の様なデータに成ります。

    A       B   C   D
1 ユーザアカウント UserID 表示名
2 Battery      12345  denchi
3

最大桁数は、特段の制約は不要です。

>diffで出力されてくるのは、登録削除作業前のユーザデータとの差分で、CSVで流し込んだデータを用いて作業を行うのですが、その作業を行う前のデータとの差分で、登録削除作業との差分を取り出しています。

この部分が未だにわかりません。
CSVデータは、どのような内容になっていて、上記のシートのデータに対して、
差分として、どのような結果がどこに出力(または表示)されればいいのですか?

それとも、このあたりは、回答者側で推測する必要がありますか?

【64712】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/9(火) 23:43 -

引用なし
パスワード
   かみちゃんさん、度々申し訳有りません。

▼かみちゃん さん:
>    A       B   C   D
>1 ユーザアカウント UserID 表示名
>2 Battery      12345  denchi
>3
>
>最大桁数は、特段の制約は不要です。
>
>>diffで出力されてくるのは、登録削除作業前のユーザデータとの差分で、CSVで流し込んだデータを用いて作業を行うのですが、その作業を行う前のデータとの差分で、登録削除作業との差分を取り出しています。
>
>この部分が未だにわかりません。
>CSVデータは、どのような内容になっていて、上記のシートのデータに対して、
>差分として、どのような結果がどこに出力(または表示)されればいいのですか?

CSVデータは上記の例ですと次の様に成ります。

Battery,12345,denchi

diffで出力されるデータは次の様な形式で出力されています。

>Battery 12345 denchi

上記スペースの部分はTABで出力されている様です。
この差分のデータを、CSVに追加で取込んで文字列比較を行いたいのです。
比較の結果、同一である場合には、データの後ろに○、相違点が有る際には×を表示させたいと考えております。

【64713】Re:VBAで業務を自動化したい
発言  かみちゃん E-MAIL  - 10/3/9(火) 23:49 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>上記スペースの部分はTABで出力されている様です。
>この差分のデータを、CSVに追加で取込んで文字列比較を行いたいのです。
>比較の結果、同一である場合には、データの後ろに○、相違点が有る際には×を表示させたい

データとは、Excelシートですか?CSVデータですか?
Excelシートの場合、後ろとは、具体的にどのセルなのですか?

ExcelシートもCSVファイルも複数行あるのですよね?
そういすうサンプルを示して、○とか×とかどのような結果を期待しているのか
説明することはできないのでしょうか?

このあたりがさっぱりわかりません。

【64715】Re:VBAで業務を自動化したい
発言  超初心者  - 10/3/10(水) 9:32 -

引用なし
パスワード
   横入りすみません。


「diff」とは
h t t p ://ja.wikipedia.org/wiki/Diff
のようなものでしょうか?

使ったことがないので、動作がよく分かりません。
(不勉強ですみません^^;;)

エクセルVBAで、、、ということで、
その動作(+その後の操作?)を自動化したい、
ということで良いのですよね?

動作について、確認です。

比較元はCSV?エクセル?タブ区切テキスト?
比較先はCSV?エクセル?タブ区切テキスト?

比較後はどうしたい?
比較先のデータに○×付けてタブ区切テキスト出力?エクセル出力?

○×は項目ごと?
3項目でどれか一つでも相違があれば、×一つ付けて出力?

比較元と比較先を並べて表示?

その他、ログとして保存?その形式は?

行単位での比較?
比較先の3行目のデータが比較元の7行目にあっても
「異なる(×)」の判定?


Sheet1に比較元、Sheet2に比較先を取り込み、
Sheet3にて「=IF(Sheet1!A1=Sheet2!A1,"",Sheet2!A1)」
を入れてフィル
そんな動作で良いのでしょうか?


既出の部分もあるかとは思いますが、
載せていただけると質問内容を理解しやすいかもです^^;;

【64735】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/10(水) 18:00 -

引用なし
パスワード
   かみちゃんさん、こんばんわ
#子供の具合が悪く成って返信遅く成りました。

▼かみちゃん さん:
>こんにちは。かみちゃん です。

>データとは、Excelシートですか?CSVデータですか?
>Excelシートの場合、後ろとは、具体的にどのセルなのですか?

>ExcelシートもCSVファイルも複数行あるのですよね?
>そういすうサンプルを示して、○とか×とかどのような結果を期待しているのか
>説明することはできないのでしょうか?

>このあたりがさっぱりわかりません。

Excelシートに対しdiffの出力テキストをスペース区切りで読込を行い、取込の際に3種有るデータ(アカウント名、UserI、D表示名の3種)が入力されたセルの右隣に空白セルを挿入し、空白セルの部分に文字列比較の結果を示したいと考えています。
ExcelシートとCSVファイルは同じ行数有り、多い時で200行程度に成ります。

おぼつかない説明で申し訳御座いません。

【64736】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/10(水) 18:37 -

引用なし
パスワード
   超初心者さん、こんばんわ

▼超初心者 さん:
>横入りすみません。
>
>
>「diff」とは
>h t t p ://ja.wikipedia.org/wiki/Diff
>のようなものでしょうか?

はい、wikiに書かれているdiffを利用して差分の抽出を行っております。

>エクセルVBAで、、、ということで、
>その動作(+その後の操作?)を自動化したい、
>ということで良いのですよね?

その通りです。
今まで目視での確認を行っていたのを、Excel VBAを用いて自動化させたい。
また結果の出力を行いたいと考えております。

>動作について、確認です。
>
>比較元はCSV?エクセル?タブ区切テキスト?
>比較先はCSV?エクセル?タブ区切テキスト?

比較元は事前に作成した「ユーザ登録用.csv」を元に作成したExcelに成ります。
比較先はdiffで出力されたタブ区切りテキストをVBAを用いてテキストデータの取込をスペース区切りで行い、各データ項目の後ろに比較結果を反映させる為の空白セルを挿入したいと考えています。

またこのデータを、比較元のデータの3項目の後ろに、対比を確認する為に追記したいと考えています。

>比較後はどうしたい?
>比較先のデータに○×付けてタブ区切テキスト出力?エクセル出力?
>○×は項目ごと?
>3項目でどれか一つでも相違があれば、×一つ付けて出力?

比較後に追加で取込んだ比較先データの各項目の後ろの空白セルに、○×で各項目毎に示したいと考えています。

>比較元と比較先を並べて表示?

はい、比較元と比較先の対比及び結果が出来る形にしたいのです。

>その他、ログとして保存?その形式は?

上記の処理を行った結果を保存したものをエビデンスとして利用しますので、ログの保存は必要有りません。

>行単位での比較?
>比較先の3行目のデータが比較元の7行目にあっても
>「異なる(×)」の判定?

行単位での比較をしたいです。
私どもの環境では、CSVで流し込んだユーザ登録用データと同じ順序でdiffの比較結果が出力されておりますので、比較先と比較元の行数が異なる事は想定していませんでした。

>Sheet1に比較元、Sheet2に比較先を取り込み、
>Sheet3にて「=IF(Sheet1!A1=Sheet2!A1,"",Sheet2!A1)」
>を入れてフィル
>そんな動作で良いのでしょうか?

比較元と比較先の対比を一目で確認したい事も考えており、出来れば同じシートでの処理を行いたいと考えています。

>既出の部分もあるかとは思いますが、
>載せていただけると質問内容を理解しやすいかもです^^;;

また何か必要な情報が有りましたら、コメント頂けたらと思います。

【64739】Re:VBAで業務を自動化したい
発言  かみちゃん E-MAIL  - 10/3/10(水) 20:44 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>データとは、Excelシートですか?CSVデータですか?
>>Excelシートの場合、後ろとは、具体的にどのセルなのですか?
>
>>ExcelシートもCSVファイルも複数行あるのですよね?
>>そういすうサンプルを示して、○とか×とかどのような結果を期待しているのか
>>説明することはできないのでしょうか?
>
>>このあたりがさっぱりわかりません。
>
>Excelシートに対しdiffの出力テキストをスペース区切りで読込を行い、取込の際に3種有るデータ(アカウント名、UserI、D表示名の3種)が入力されたセルの右隣に空白セルを挿入し、空白セルの部分に文字列比較の結果を示したいと考えています。
>ExcelシートとCSVファイルは同じ行数有り、多い時で200行程度に成ります。

    A       B   C   D
1 ユーザアカウント UserID 表示名
2 Battery      12345  denchi
3 CCCCCCC      56789  dddddd
4 EEEEEEE      01234  ffffff
5

> CSVで流し込んだデータを用いて作業を行う

これは、以下のようなデータなのですか?
区切りは、TAB?スペース?

Battery 12345 denchi
CCCC111 56789 dddddd
EEEE222 01234 ffffff

未だにサンプルデータが出てこないので、困っています。

これ以上は、アドバイスできないかもしれません。

ちなみに、上記のデータであれば、期待している結果は、以下のとおりですか?

    A       B   C   D
1 ユーザアカウント UserID 表示名
2 Battery      12345  denchi ○
3 CCCCCCC      56789  dddddd ×
4 EEEEEEE      01234  ffffff ×
5

> セルの右隣に空白セルを挿入し、空白セルの部分に文字列比較の結果を示したい

挿入する必要があるのでしょうか?
D列より右側にデータが存在するということなのでしょうか?

わからないことが多すぎます。

【64740】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/10(水) 22:19 -

引用なし
パスワード
   かみちゃんさん、こんばんわ

▼かみちゃん さん:
>    A       B   C   D
>1 ユーザアカウント UserID 表示名
>2 Battery      12345  denchi
>3 CCCCCCC      56789  dddddd
>4 EEEEEEE      01234  ffffff
>5

この上の図の右側に比較先データとして更に3項目のデータと、それぞれのデータの
後ろに比較結果を示す為の空白セルが欲しいのです。

>これは、以下のようなデータなのですか?
>区切りは、TAB?スペース?
>
>Battery 12345 denchi
>CCCC111 56789 dddddd
>EEEE222 01234 ffffff

TAB区切りのデータに成ります。

>未だにサンプルデータが出てこないので、困っています。
>
>これ以上は、アドバイスできないかもしれません。
>
>ちなみに、上記のデータであれば、期待している結果は、以下のとおりですか?
>
>    A       B   C   D
>1 ユーザアカウント UserID 表示名
>2 Battery      12345  denchi ○
>3 CCCCCCC      56789  dddddd ×
>4 EEEEEEE      01234  ffffff ×
>5

上記の図の様にすると、間違っている箇所が即座に判らないので、3種のデータ
それぞれの後ろに○×で示したいと考えております。

>> セルの右隣に空白セルを挿入し、空白セルの部分に文字列比較の結果を示したい
>
>挿入する必要があるのでしょうか?
>D列より右側にデータが存在するということなのでしょうか?

D列より右にデータは存在しません。

【64741】Re:VBAで業務を自動化したい
発言  かみちゃん E-MAIL  - 10/3/10(水) 23:02 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>    A       B   C   D
>>1 ユーザアカウント UserID 表示名
>>2 Battery      12345  denchi
>>3 CCCCCCC      56789  dddddd
>>4 EEEEEEE      01234  ffffff
>>5
>
>この上の図の右側に比較先データとして更に3項目のデータと、それぞれのデータの
>後ろに比較結果を示す為の空白セルが欲しいのです。

具体的にほしい内容を ↑ のように示すことはできませんか?

>>これは、以下のようなデータなのですか?
>>区切りは、TAB?スペース?
>>
>>Battery 12345 denchi
>>CCCC111 56789 dddddd
>>EEEE222 01234 ffffff
>
>TAB区切りのデータに成ります。

であれば、「スペース区切り」でという表現はどういうことですか?

>>    A       B   C   D
>>1 ユーザアカウント UserID 表示名
>>2 Battery      12345  denchi ○
>>3 CCCCCCC      56789  dddddd ×
>>4 EEEEEEE      01234  ffffff ×
>>5
>
>上記の図の様にすると、間違っている箇所が即座に判らないので、3種のデータ
>それぞれの後ろに○×で示したいと考えております。

具体的にほしい内容を示すことはできませんか?

もしかして、以下のような結果を得たいのですか?

    A      B  C   D   E  F
1 ユーザアカウント   UserID   表示名
2 Battery      ○ 12345  ○ denchi ○
3 CCCCCCC      × 56789  ○ dddddd ○
4 EEEEEEE      ○ 01234  ○ ffffff ○
5

この結果は、元データと同じシートでいいのですか?
別のシートのほうがいいのは?

【64742】Re:VBAで業務を自動化したい
発言  電池切れ  - 10/3/10(水) 23:12 -

引用なし
パスワード
   かみちゃんさん、こんばんわ

▼かみちゃん さん:

>>>    A       B   C   D
>>>1 ユーザアカウント UserID 表示名
>>>2 Battery      12345  denchi
>>>3 CCCCCCC      56789  dddddd
>>>4 EEEEEEE      01234  ffffff
>>>5
>>
>>この上の図の右側に比較先データとして更に3項目のデータと、それぞれのデータの
>>後ろに比較結果を示す為の空白セルが欲しいのです。
>
>具体的にほしい内容を ↑ のように示すことはできませんか?

申し訳御座いません、かみちゃんさんの公開されているアドレスに事情の説明メールを出させて頂きましたので、ご覧頂けますか?

>>>区切りは、TAB?スペース?
>>TAB区切りのデータに成ります。
>であれば、「スペース区切り」でという表現はどういうことですか?

diffの出力をPuTTYの画面からコピペする為に、スペースに成ってしまうのです。

>具体的にほしい内容を示すことはできませんか?
>もしかして、以下のような結果を得たいのですか?
>
>    A      B  C   D   E  F
>1 ユーザアカウント   UserID   表示名
>2 Battery      ○ 12345  ○ denchi ○
>3 CCCCCCC      × 56789  ○ dddddd ○
>4 EEEEEEE      ○ 01234  ○ ffffff ○
>5
>
>この結果は、元データと同じシートでいいのですか?
>別のシートのほうがいいのは?

はい、上記の図の様に結果を確認したいと思っております。
実際には、上記の図の更に左に比較元と成っているデータが表示されて、
右側に比較先と成っているデータ(これをdiffの出力から取込みたいです)
が上記の図の様に成っている事が望ましいのです。
対比も視覚的に見たい為、同一のシートが望ましいです。

【64873】VBAで業務を自動化できました(解決)
お礼  電池切れ  - 10/3/23(火) 0:04 -

引用なし
パスワード
   長らく置き去りにして居りましたが、解決致しました。
参考に成る方もいらっしゃればと思い、下記に記載をさせて頂きます。

> 上記の図の様に結果を確認したいと思っております。
> 実際には、上記の図の更に左に比較元と成っているデータが表示されて、
> 右側に比較先と成っているデータ(これをdiffの出力から取込みたいです)
> が上記の図の様に成っている事が望ましいのです。
> 対比も視覚的に見たい為、同一のシートが望ましいです。

解決しましたので、報告します。

Diff.csv

Battery,12345,denchi
CCCC111,56789,dddddd
EEEE222,01234,ffffff

Data.csv

Battery,12345,denchi
CCCCCCC,56789,dddddx
EEEEEEE,01234,fffffx

という2つのCSVファイルがあるものとします。

Data.csv をExcelシートを以下のように読み込みます。

   A   B   C 
1 Battery 12345 denchi
2 CCCCCCC 56789 dddddx
3 EEEEEEE 01234 fffffx
4

そのあと、
Diff.csv
を読み込んで、上記のシートの各セルと対比させ、以下のようにしたかった
のです。

   A   B   C  D   E   F  G  H  I  J K
1 Battery 12345 denchi  Battery ○ 12345 ○ denchi ○
2 CCCCCCC 56789 dddddx  CCCC111 × 56789 ○ dddddd ×
3 EEEEEEE 01234 fffffx  EEEE222 × 01234 ○ ffffff ×
4

つまり、Diff出力.csvの各行をSplit関数でカンマ区切りで各カラムに分けて、
そして、ExcelシートのA1セルと、Diff.csv の1行目の1カラム目と対比させ、
一致していればF1セルのように ○、一致していなければ × とし、
A〜C列は、Data.csv より、E列、G列、I列は、Diff出力.csvより読み込むと
いうことです。

なお、Diff出力.csv の列方向は、Data.csv と項目としては、同じですが、
行方向は、順不同になっていますし、A列と1カラム目は、一致しないものもあ
ります。

このような前提で作成したコードは、以下のようになりました。

Sub Sample()
 Dim strFileName(1) As String
 Dim WS As Worksheet
 Dim i As Long
 Dim io As Integer
 Dim strRec As String
 Dim v As Variant
 Dim dic As Object
 Dim x As Long, xx As Long
 Dim lngRowMax As Long
 Dim blnCk As Boolean
 Dim t As Single
 
 strFileName(0) = Application.GetOpenFilename("テキストファイル,*.csv", , "Dataファイルを選択してください")
 If strFileName(0) = "False" Then
  MsgBox "処理を中止します"
  Exit Sub
 End If
 
 strFileName(1) = Application.GetOpenFilename("テキストファイル,*.csv", , "Diff出力ファイルを選択してください")
 If strFileName(1) = "False" Then
  MsgBox "処理を中止します"
  Exit Sub
 End If
 
 t = Timer
  
 ReDim vv(1 To 65536, 1 To 10)
 Set dic = CreateObject("Scripting.Dictionary")
 
 x = 0
 io = FreeFile
 Open strFileName(0) For Input As io
 blnCk = True
 Do Until EOF(io)
  Line Input #io, strRec
  v = Split(strRec, ",")
  x = x + 1
  vv(x, 1) = v(0)
  vv(x, 2) = v(1)
  vv(x, 3) = v(2)
 Loop
 Close io
 
 lngRowMax = x
 
 x = 0
 io = FreeFile
 Open strFileName(1) For Input As io
 Do Until EOF(io)
  Line Input #io, strRec
  v = Split(strRec, ",")
  If Not dic.Exists(v(0)) Then
   x = x + 1
   dic.Add v(0), x
  End If
  xx = dic(v(0))
  vv(xx, 5) = v(0)
  vv(xx, 7) = v(1)
  vv(xx, 9) = v(2)
 Loop
 Close io
 Set dic = Nothing
 
 If lngRowMax < x Then
  lngRowMax = x
 End If
 blnCk = True
 For x = 1 To lngRowMax
  If vv(x, 1) = vv(x, 5) Then
   vv(x, 6) = "○"
  Else
   vv(x, 6) = "×"
   blnCk = False
  End If
  If CStr(vv(x, 2)) = CStr(vv(x, 7)) Then
   vv(x, 8) = "○"
  Else
   vv(x, 8) = "×"
   blnCk = False
  End If
  If vv(x, 3) = vv(x, 9) Then
   vv(x, 10) = "○"
  Else
   vv(x, 10) = "×"
   blnCk = False
  End If
 Next
 
 Workbooks.Add xlWBATWorksheet
 Set WS = ActiveSheet
 
 With WS.Range("A1").Resize(x, 10)
  .NumberFormatLocal = "@"
  .Value = vv
  .EntireColumn.AutoFit
 End With
 
 If blnCk Then
  MsgBox "処理を終了しました。相違点なし" & vbCrLf & "処理時間 " & Format((Timer - t) / 60 / 60 / 24, "h:mm:ss"), vbInformation
 Else
  MsgBox "処理を終了しました。相違点あり" & vbCrLf & "処理時間 " & Format((Timer - t) / 60 / 60 / 24, "h:mm:ss"), vbInformation
 End If
End Sub

2992 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free