CSVファイルを1行ずつ比較して読み込み、一致した行を別ファイルに記述していこうと思っています。
現在、csvファイルを読み込む所まで出来ています。
比較して別ファイルに記述する方法を教えて下さい。
もしくはアドバイスください。
【ファイルの中身】
"09/09/2005 0:00:00,aaa,bbb,ccc"
【比較条件】
当日の日付を取得し、年月日だけで比較する
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\test.csv")
Do while objFile.ReadLine <> ""
'IF文を記述(条件:日付)
'別ファイルに記述する
Loop
objFile.close
Set objFileSystem = Nothing
Set objFile = Nothing
No.4ベストアンサー
- 回答日時:
>エラー:”ファイルの最後を超えた入力を行おうとしました”
#2の時に書いておいても良かったんですけど、質問の内容と直接は関係ないので書きませんでしたが
ファイルの入力では
Do until readFile.AtEndOfStream
strLine = readFile.ReadLine
'処理
loop
のようにAtEndOfStreamでファイルの終端に達したかどうかを調べて、
達していない間ファイル入力操作をするというのが定番です。
表記のエラーは、既にファイルの最後まで読み込んだのに、
次の読み込みをしようとしたということです。
また、
>MyString = split(objFile.ReadLine,",")
のようにすると、ReadLineによって2回目の読み込みが行われてしまうので、読み込んだ後、色々操作をしようとする場合には、サンプルで示したように、変数に代入して取っておく(のを使う)のが定番です。
(もちろん、一度だけなら直接ReadLineしたものを使ってもいいんですけど)
No.3
- 回答日時:
質問です。
補足してください。(1)日をまたいだときはどうしますか?
(2)ファイルの中身の 09/09/2005 は mm/dd/yyyy ですか dd/mm/yyyy ですか?
(3) WSHを使わなくても出来そうですがWSHが必須ですか
(4) ファイルの中身(test.csv)は最大何行ぐらいを想定していますか?
この回答への補足
レスありがとうございます。
>(1)日をまたいだときはどうしますか?
→日をまたぐ事はありません。該当の日の0時~23時59分59秒までです。
>(2)ファイルの中身の 09/09/2005 は mm/dd/yyyyですか
→日付の形式はmm/dd/yyyyです
>(3) WSHを使わなくても出来そうですがWSHが必須ですか dd/mm/yyyy ですか?
→WSHを理解していないので、調べておきます。
説明を頂けると嬉しいです。
>(4) ファイルの中身(test.csv)は最大何行ぐらいを想定 していますか?
→ファイル容量が10MBほどあり、Excelファイルでは全体を読み込む事が出来ないため、該当の行だけを抽出しようと思っています。
以上、このような補足で宜しかったでしょうか?
宜しくお願い致します。
No.2
- 回答日時:
>比較して
読み込んだ一行分のデータがaLineだとすると
field=split(aLine,",")
で、
field(0)に日付部分の文字列(09/09/2005 0:00:00)が切り出せます。
さらに、split(field(0)," ")するか
left(field(0),10)で年月日部分(09/09/2005)が切り出せますので、
そこで比較します。
if left(field(0),10)="09/09/2005" then
>別ファイルに記述する
OpenTextFileで書き込みするファイルをオープンします。
Set objWFile=objFSO.OpenTextFile("c:\out.csv", 2, True)
出力ファイルに書き込みます
objWFile.write(aLine)
この回答への補足
Dim MyDate,MonthString,DayString,YearString
'今日の日付を取得
MyDate = Date - 2 ' MyDate は、現在のシステムの日付
YearString = Left(MyDate,4)
MonthString = Mid(MyDate,6,2)
DayString = Right(MyDate,2)
Dim objFSO ' FileSystemObject
Dim objFile ' ファイル読み込み用
Dim MyString
Dim DateString
'DateString = MonthString & / DayString & / & YearString
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\test.csv")
Do until objFile.ReadLine = ""
MyString = split(objFile.ReadLine,",")
if left(MyString(0),10) = "09/22/2005" then
msgbox "!!!"
end if
Loop
objFile.close
これを実行すると、下記エラーが出力されるんですが、内容が良く分かりません。教えて下さい。
エラー:”ファイルの最後を超えた入力を行おうとしました”
No.1
- 回答日時:
「CSVファイルを1行ずつ比較して読み込み、一致した行を別ファイルに記述」という処理の内容を、まだ具体的にはお考えでないのではないかと思います。
試しに、いろいろな内容で10行ほどのサンプルファイルをいくつか作成し、手作業でその処理作業をやってみてください。
次に、その「手作業で行う作業」の詳細を書き出してみてください。その作業のことを全く何も知らない人でも、その詳細を読めば必ず同じ作業ができるという程度に細かく書いてみてください。
そうすれば、その内容をプログラムに移し変えるのは比較的容易かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
テキストファイルの最終行を削...
-
ファイル名の先頭にアンダース...
-
ハッシュの計算時間について
-
ドラッグアンドドロップでファ...
-
大きいサイズのテキストファイ...
-
CSVファイルへの保存の際、デー...
-
C言語のfopenについて教えてく...
-
アプリケーション終了時例外エ...
-
COM相互運用機能のON,OFFによる...
-
c言語のfeof関数はどういう関数?
-
fopenできる上限の変更
-
iniファイルに追記がしたいです。
-
フリーソフトウェアでflaファイ...
-
マスタとファイルの違いって?
-
Excelマクロでの再読込み方法
-
mmap()を使ったファイルへの書...
-
グーグルクロームとIEの表示の違い
-
Cでのネットワークファイルの読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
CSVファイルへの保存の際、デー...
-
ファイルを記録してあるセクタ...
-
テキストファイルの最終行を削...
-
SGファイルって何ですか?
-
ドラッグアンドドロップでファ...
-
分割コンパイルの#defineについて
-
fopenできる上限の変更
-
VBに、Cのincludeのようなもの...
-
グローバル変数のよくない使い...
-
ファイルの結合
-
大きいサイズのテキストファイ...
-
iniファイルに追記がしたいです。
-
バッチで118項目のCSVを処理し...
-
ハッシュの計算時間について
-
C言語のfopenについて教えてく...
-
Javascript で INI の読み書き
-
Excelマクロでの再読込み方法
おすすめ情報