VBA共通:VBAでYYYYMMDDhhmmss形式の日付時刻を表す文字列を日付型のデータに変換するサンプルプログラム(ユーザー定義関数)

VBA共通:VBAでYYYYMMDDhhmmss形式の日付時刻を表す文字列を日付型のデータに変換するサンプルプログラム(ユーザー定義関数)

日付時刻がYYYYMMDDhhmmss形式で表された文字列を日付型のデータ(YYYY/MM/DD HH:MM:SS)に変換するVBAのサンプルプログラムを覚書。

例えば、20150731090000を日付型の2015/7/31 9:00:00に変換するとういう感じ。

応用としてYYYYMMDDをYYYY/MM/DDの日付型に変換するサンプルプログラムも紹介します。

紹介するサンプルプログラムは、VBA共通で使えるのでExcelでもAccessでも使用できます。

YYYYMMDDhhmmss形式の日付時刻を表す文字列を日付型のデータに変換する処理の概要

YYYYMMDDhhmmss形式の日付時刻を表す文字列を日付型のデータに変換する処理の考え方としてはすごく単純です。

YYYYMMDDhhmmss形式の文字列をYYYY、MM、DD、hh、mm、ssにバラバラにしてそれを用意した各変数に一旦代入しておき、各変数(年、月、日、時、分、秒)を通常の日付を表す形式(YYYY/MM/DD hh:mm:ss)に作り直します。

あとはCDate 関数を使って文字列を日付型に変換するだけです。

YYYYMMDDhhmmss形式の日付時刻を表す文字列を日付型のデータに変換するVBAサンプルプログラム1

何度も使われる場合を考えてユーザー定義関数として作成しています。

作成したユーザー定義関数の使用例

以下はVBAのプログラムの中でサンプルプログラム1のユーザー定義関数を呼び出して使用する例です。

YYYYMMDD形式の日付文字列を日付型に変換するVBAのサンプルプログラム

VBAサンプルプログラム1の応用として時、分、秒まではいらなくて年月日までを表すYYYYMMDD形式の文字列を日付型に変換する場合は不要な部分を削除すればいいだけ。

使い方はVBAサンプルプログラム1と同じなので割愛。

まとめ

日付を表す文字列をばらして作りなおして型変換という単純な方法です。

Excelであればワークシート関数としても使えます。

もちろんAccessのクエリーの式に指定して使うこともできます。

もう少しかっこいいやり方がないかなと思いましたが、これくらいしか思い浮かびませんでした。