- ベストアンサー
ファイル名が日付のファイルの存在を確認する方法
- VB6でファイル名が日付の場合に、ファイルの存在を確認する方法がわかりません。
- ログ作成時にファイル名を日付で作成し、2行書き込みたいが、同じ日付のファイルが存在する場合は1行だけを書き込みたい。
- ファイル名が日付で流動的なので、確認方法がわかりません。現在のコードでは毎回2行書き込んでしまいます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1) ファイル名が "C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt" なのだから Dir()関数で存在をテェックする時も Dir("C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt",vbNormal) でないとテェックできません。 2) ファイルをOpen後にDir()関数でテェックしていますがOpenした時点でファイルは作成されますのでかならず「有り」になってしまいます。したがってOpen前にテェックしなければなりません。 Dim FileName As String Dim FileFlag As Boolean -省略- FileName="C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt" FileFlag=iif(Dir(FileName,vbNormal<>"",True,False) -省略- Open FileName For Append As #fileNo if fileFlag=False Then Print #fileNo, "設定日時,対象番号,設定値" end if Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo 'ファイルを閉じる 参考: 文字列の連結には「+」ではなく「&」を使用する方が望ましいです。 "C:\Log\" & Format(Date, "yyyy年mm月dd日") & ".txt"
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
Open "C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt"でこの名前で開くのに >If Dir(Date.txt) = "" Then でチェックできるのかな。 Dir (1)関数の()内は文字列で在るべきでしょう。 (2)またフルパスで在るべきでしょう (3)存在しないときは、空白が返る(ヌルストリング) この点に違反してませんか。 >C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt"んおような名前になるべきなのでは? ーーー ファイルの存在を調べるのに FSOで.FileExistsというのも在ります。 興味があれば、Googleででも「FSO .FileExists」で照会のこと。
お礼
ありがとうございます! C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt"で明日やってみます。 FileExistsも調べてやってみます。
- bin-chan
- ベストアンサー率33% (1403/4213)
DATE.txtはどこで宣言してどこで値を設定してますか?見あたらないようですが。 DATEは予約語じゃないですかね。 FileSystemObjectを利用したほうが楽だと思います。 キーワード「filesystemobject vb6」でgoogle検索してみてください。 先頭に出てくるページにサンプルたくさんありますよ。 ファイル、ディレクトリの存在確認のサンプルもあり。
お礼
ありがとうございます。 (Date, "yyyy年mm月dd日") + ".txt"をDATE.txtと勝手に置き換えました。。。 FileSystemObjectを調べて試してみます!
お礼
ありがとうございます! Dir("C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt",vbNormal) で認識するんですね! ファイルオープン前にチェックするのは頭にありませんでした。 VB環境が今日はないので、月曜朝確認してみます。 文字列の連結には「+」ではなく「&」が望ましいのは何ででしょうか? よりよいプログラムにするために知りたいです!