重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

http://blog.livedoor.jp/goji_da_tsuji/archives/5 …

このページにある方法を使って
ファイルの作成日時や更新日時を書き換えたいと考えています。

そのためには
date型の変数に任意の日時を代入する必要があります。
(例:2015年2月24日16:23:16)

date型の変数は

http://www.exvba.com/blog/?p=1721

このページにあるように
1899年12月30日から起算して何日目にあるかを代入する必要があります。
年によって日数が異なるため、単純に365を年数にかけるというわけにはいきません。

どうすれば
任意の日時をdate型で宣言した変数に代入することができますか?

A 回答 (4件)

#2の回答者です。


回答の意味が違ったのでしょうか?

>年と月と日が変数として
>与えられている場合にはどうしたら良いですか?
私は、# ~# のような日付リテラル値というのは、なるべく使わないようにしています。
これは、ひとつのVB系の書法とかいうものですね。だから、DateValueも同じなのです。

年, 月, 日が与えられていれば、DateSerial(年, 月, 日)ですね。
決められた所に、決められたものを入れるほうが確かだと思います。
DateValue とか、Windowsのローカル設定に依存したはずですね。
まあ、日本とアメリカの場合は、年の部分だけですから、切り替わりますが。

ご質問の場合は、
(例:2015年2月24日16:23:16)
   dTimeStamp = DateSerial(2015, 2, 24) + _
   TimeSerial(16, 23, 16)
    • good
    • 0
この回答へのお礼

ありがとうございます。

完璧でした。

お礼日時:2015/03/31 13:00

>年と月と日が変数として与えられている場合にはどうしたら良いですか?



DateValue関数とTimeValue関数を使うのでしょう。
x = DateValue(year0&"-"&month0&"-"&day0)+TimeValue(hour0&":"&minute0)
    • good
    • 0

こんばんは。



http://www.exvba.com/blog/?p=1721
こういうものは、日付リテラルと言いますが、今回のお話とは、別ものです。

>1899年12月30日から起算して何日目にあるかを代入する必要があります。
これを日付シリアル値と言いますが、日付があれば、それがPCの中で、自動的に変換されるものなのです。
つまり、例えば、 SerialNumber = CLng(Date) このようにすると、累計の日付のシリアル値が出てきます。

さて、今回の書き換えですが、
「任意の日時をdate型で宣言した変数に代入することができますか?」
という意味は、私には、よく分かりませんが、ファイルがあるなら、ファイルのタイムスタンプを使えばよいと思います。

以下は、途中までですが、*関数のFileDateTimeを使いました。
Scripting.FileSystemObject の、DateLasteModified でも良いのですが、オブジェクトを通す関係で、遅くなるような気がしまた。

出力は、すでに、Date型になっていますから、そのまま変数 dTimeStamp に入れてしまいました。

'//
Sub SetFileTimeStamp24()
'----省略-----
 sFolder = "C:\Data\DataProject\AudioVisual\DVD\24\"
 sFileName = Dir(sFolder, vbNormal)
 
 If sFileName <> Space(0) Then
  Do While sFileName <> Space(0)
   myDate = FileDateTime(sFolder & sFileName) '*日付+時間
   myTime = myDate - Int(myDate) '**時間
   dTimeStamp = DateSerial(2011, Month(myDate), 24) + _
   TimeSerial(Hour(myTime), Minute(myTime), 0) '日付だけでなく、時間も変えられる
   ' 作成日時を更新する
   '----省略-----
    • good
    • 0

>任意の日時をdate型で宣言した変数に代入することができますか?


こう云う事?
任意の日付を変数に入れるときには #でくくります。
一例
mydate=#2015/3/30#
    • good
    • 0
この回答へのお礼

ありがとうございます。


年と月と日が変数として
与えられている場合にはどうしたら良いですか?

year0 = 2015
month0 = 3
day0 = 30

の場合

mydate = "#" & year0 & "/" & month0 & "/" & day0 & "#"

というようにしても
型が一致しませんと出てうまくいかないのですが・・・

お礼日時:2015/03/30 22:02

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