dポイントプレゼントキャンペーン実施中!

VBAマクロを使用して現在時間と、ファイルの作成時間を比較後、10分前以降に作成したファイルを開かないようにするマクロを作ろうとしています。
下記のような方法で、現在時間と、ファイルの作成時間を取得しましたが、比較する方法(差分を取る方法)がわかりません。

mydateは、2006,02,15,07,16
myfile_dtの方は、2006/1/18 1:11

のような形式で、表示されていますがこのような異なる形式で表示される時間を比較することが出来るのでしょうか。
比較する方法を教えてください。

Dim mydate as integer
Dim myfile_dt as integer

mydate = Format(Now(), "yyyy,mm,dd,hh,mm")
myfile_dt = FileDateTime("aaaa.csv")

A 回答 (4件)

'バリアントにする


Dim mydate
Dim myfile_dt
mydate = Now() 'そのまま使う
myfile_dt = FileDateTime("aaaa.csv")
これで比較できるはず
    • good
    • 0
この回答へのお礼

ご回答ありがとうござました。
早速変数をバイリアントに変更しやってみたところうまくいきました。

ところが、下のようなプログラムを書いたところ、日にちが30日過ぎたファイルでも開いてしまいます。
プログラムに何か不具合があるのでしょうか。教えてください。


Dim mydate As Variant '現在時刻
Dim myfile_dt As Variant 'ファイル作成日
Dim mydiff As Variant '現在時刻-ファイル作成日
Dim t As Variant
t = 10  ’10日に設定

mydate = Now()
myfile_dt = FileDateTime("aaa.csv")
mydiff = mydate - myfile_dt

’ここで10日過ぎたファイルを開く場合終了させたい。
If (mydiff < 0) And (mydiff > t) Then Exit Sub
  
Workbooks.Open Filename:=("aaa.csv")

お礼日時:2006/02/18 09:42

#3です


間違えましたorz

×mydiff = DateDiff("d", fileCreatedDate, Date)

○mydiff = DateDiff("d", myfile_dt, Date)
    • good
    • 0

日付/時刻の比較等に関しては「日付/時刻型」を使用するべきでは?


あと差分を求めるのであれば、日付関数を使用するべきです

例えば、こんな感じに

Dim myfile_dt As Date
Dim mydiff As Integer
myfile_dt = FileDateTime("aaaa.csv")
mydiff = DateDiff("d", fileCreatedDate, Date)

If mydiff > 10 Then Exit Sub

※動作検証していないです
    • good
    • 0
この回答へのお礼

なるほどこんな具合にも出来るんですね。
参考にします。

お礼日時:2006/02/19 17:31

>If (mydiff < 0) And (mydiff > t) Then Exit Sub


And 条件を使うと両方の条件が成立する時という条件になり、
0より小さく、かつ、10より大きいは、両方同時には成立しませんので Exit Sub が実行されることはありません。
Or を使ってみてください。
    • good
    • 0
この回答へのお礼

andではなくorが正解です。間違いです。
お騒がせして申し訳ありませんでした。

お礼日時:2006/02/19 17:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!