現在日時ってプログラムの中でよく使います。
でも使うのに気をつけなければいけないのがフォーマット。
スペースとか記号とか来て“エラー”で落ちるはよくある。
今回はファイル名でも使用できる形(yyyymmddhhmmss)で、取得する方法紹介します。
Now()
ちゃんと取れてる!取れてるけど、使いにくい・・・
- ファイル名に使おうと思うとエラー("/"と":"はダメ)
- 日付まででいいんだ!ってときに分けられない。
だから僕は取得したいときは、下記を使ってyyyymmddhhmmss の形式にして取得してる。
時分秒いらない時は、その部分だけコメントアウトすればいい。
コード
'現在日時取得
Function getNow()
Dim w_Now
Dim w_Month
Dim w_Day
'年取得
w_Now = ""
w_Now = Year(Now())
'月取得(二桁で揃える)
w_Month = Month(Now())
If w_Month < 10 Then
w_Now = w_Now & "0" & w_Month
Else
w_Now = w_Now & w_Month
End If
'日取得(二桁で揃える)
w_Day = Day(Now())
If w_Day < 10 Then
w_Now = w_Now & "0" & w_Day
Else
w_Now = w_Now & w_Day
End If
'時分秒取得
w_Now = w_Now & Right("0" & Hour(Now()) , 2)
w_Now = w_Now & Right("0" & Minute(Now()) , 2)
w_Now = w_Now & Right("0" & Second(Now()) , 2)
getNow = w_Now
End Function
処理結果
解説
Year(Now())
という感じで書くと該当部分だけ取ってこれます。
ただ、1つ弱点があるんです。
『2020(年)05(月)05(日)01(時)02(分)03(秒)』という感じで14桁で揃えたほうが使いやすいですが、
Month(Now())
ってやると、取れるのは『05(2桁)』ではなく『5(1桁)』なんです。
月以降が少しごちゃっとしているのは、それを全て2桁に揃えるためと思ってください。
VBA と VBScript で違いはある?
どっちも同じ