- ベストアンサー
マクロでの処理結果をログファイルとして作成したい
あるフォルダ内にあるエクセルファイルを開き(ファイル数は変動)、A1セルの値を取得し、あるリストと整合チェックを実施します。 存在すればOK、存在しなかったらNGとし、その結果をtxtファイルに出力する処理を考えています。 -------テキストファイルイメージ------- 整合チェック 処理結果 処理日時:2008/10/18 9:00 OK 00011,99999,52222 NG 00012,22222,33333 ------------------------------------- 処理方法として考えたのは、上記テキストファイルイメージのエクセルファイルを作成後、テキストファイルに出力する方法です。 (そもそもこの方法で良いのかも不安ですが) 1.仮のエクセルファイルを作成 2.A1セルにヘッダ情報を出力 3.整合チェックを実施する度に、OKまたはNGの行にコードを格納 4.すべての整合チェック終了後、テキストファイルにエクセル情報を出力 5.エクセルファイルは保存しないでCLOSE 質問内容は以下の2点です。 (1)エクセルファイルに"0で始まる数字を出力すると"0"が表示されなくなってしまいます。これを回避する方法を教えてください。 (2)テキストファイルにコンマ区切りで出力する方法を教えてください。 (3)実施したい内容に、この処理方法(エクセルに出力後テキストに書き出し)は、あっているでしょうか?適切な処理方法があれば教えてください。 今週中に作成する必要があり、大変困っています。 すみませんが、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは A1.先頭の"0"を表示させるには、セルの書式を文字列に変更してください。 A2.以下の様な形で、コンマ区切りで出力できます。 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objOut = objFSO.OpenTextFile("test1.txt", 2) strLine = "整合チェック 処理結果 処理日時:2008/10/18 9:00" objOut.WriteLine strLine strLine = "OK 00011,99999,52222" objOut.WriteLine strLine strLine = "NG 00012,22222,33333" objOut.WriteLine strLine objOut.Close A3.CSVの形でテキストファイルへ出力するだけなら、特に仮のExcelファイルなどを作成しなくても、上記A2.の方法で出力できます。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルに凝り固まっているように思う。 広く経験のこと。 わざわざエクセルのシートに書き出してCSV、TXTファイルしなくても、普通は直接できるし、するものと思う。 CSVファイルの書き出しは、エクセルより古くからある原初的なものです。 それに便利なWRITE#ステートメントが昔からある。 今も使える。 下記をやってみて納得してください。 標準モジュールに(XXXXはユーザーIDの変える事) 実際はデータ編集とWriteはループの中で繰り返す。 Sub test01() Open "C:\Documents and Settings\XXXX\My Documents\aaa8.csv" For Output As #1 a = 123 b = "abcd" c = "01234" Write #1, a, b, c a = 3456 b = "sdfgd" c = "00335" Write #1, a, b, c Close #1 End Sub 結果 メモ帳で表示 123,"abcd","01234" 3456,"sdfgd","00335" ただしこれは1例で、テキストファイルに書き出しのコード(方法)は、種類が増えているが。 Fso利用とかPrint #や。NET系(本件と関係ないが)。 参考 http://www.geocities.co.jp/Milkyway/4171/vb6/010.htm
お礼
ありがとうございました。 エクセルに出力することなく、PRINTを使用してテキストファイルに順に出力することができました。
お礼
早速の回答ありがとうございます。 わかりにくい文章ですみませんでした。 無事にエクセルファイルに一度出力することなく、直接テキストファイルに出力することができました。 ありがとうございました。