dateValue

dateValue関数は、日付形式の文字列をシリアル値に変換する関数です。

構文
dateValue( str )
引数
str
戻値

プログラム

////////////////////////////////////////////////// // 【引数】 // str // 【戻値】 // ////////////////////////////////////////////////// FUNCTION dateValue(str) HASHTBL Pattern Pattern["year"] = "(190[0-9]|19[1-9][0-9]|[2-9][0-9]{3})" Pattern["month"] = "(1[0-2]|0?[1-9])" Pattern["day"] = "([1-2][0-9]|3[0-1]|0?[1-9])" SELECT TRUE CASE reTest(str, Pattern["year"] + "/" + Pattern["month"] + "/" + Pattern["day"]) Matches = reExecute(str, Pattern["year"] + "/" + Pattern["month"] + "/" + Pattern["day"]) WITH Matches.Item(0) date = .SubMatches(0) + "/" + xlTEXT(VAL(.SubMatches(1)), "00") + "/" + xlTEXT(VAL(.SubMatches(2)), "00") ENDWITH CASE reTest(str, Pattern["year"] + "年" + Pattern["month"] + "月" + Pattern["day"] + "日") Matches = reExecute(str, Pattern["year"] + "年" + Pattern["month"] + "月" + Pattern["day"] + "日") WITH Matches.Item(0) date = .SubMatches(0) + "/" + xlTEXT(VAL(.SubMatches(1)), "00") + "/" + xlTEXT(VAL(.SubMatches(2)), "00") ENDWITH CASE reTest(str, Pattern["month"] + "/" + Pattern["day"]) Matches = reExecute(str, Pattern["month"] + "/" + Pattern["day"]) GETTIME() WITH Matches.Item(0) date = G_TIME_YY4 + "/" + xlTEXT(VAL(.SubMatches(0)), "00") + "/" + xlTEXT(VAL(.SubMatches(1)), "00") ENDWITH CASE reTest(str, Pattern["month"] + "月" + Pattern["day"] + "日") Matches = reExecute(str, Pattern["month"] + "月" + Pattern["day"] + "日") GETTIME() WITH Matches.Item(0) date = G_TIME_YY4 + "/" + xlTEXT(VAL(.SubMatches(0)), "00") + "/" + xlTEXT(VAL(.SubMatches(1)), "00") ENDWITH CASE reTest(str, "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-" + Pattern["day"] + "$") Matches = reExecute(str, "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-" + Pattern["day"] + "$") SELECT Matches.Item(0).SubMatches(0) CASE "Jan"; m = "01" CASE "Feb"; m = "02" CASE "Mar"; m = "03" CASE "Apr"; m = "04" CASE "May"; m = "05" CASE "Jun"; m = "06" CASE "Jul"; m = "07" CASE "Aug"; m = "08" CASE "Sep"; m = "09" CASE "Oct"; m = "10" CASE "Nov"; m = "11" CASE "Dec"; m = "12" SELEND GETTIME() date = G_TIME_YY4 + m + Matches.Item(0).SubMatches(1) SELEND RESULT = uwscToSerial(GETTIME(0, date)) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現で検索した結果をMatchesコレクションとして返します。 ////////////////////////////////////////////////// FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Execute(str) FEND ////////////////////////////////////////////////// // 【引数】 // str : 正規表現による検索の対象となる文字列 // Pattern : 正規表現で使用するパターンを設定 // IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse // Global : 文字列全体を検索する場合はTrue、しない場合はFalse // 【戻値】 // 正規表現にマッチするかどうか ////////////////////////////////////////////////// FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE) DIM re = CREATEOLEOBJ("VBScript.RegExp") re.Pattern = Pattern re.IgnoreCase = IgnoreCase re.Global = Global RESULT = re.Test(str) FEND ////////////////////////////////////////////////// // 【引数】 // uwscTime : UWSC時間 // 【戻値】 // シリアル値 ////////////////////////////////////////////////// FUNCTION uwscToSerial(uwscTime) uwscDate = uwscTime / 86400 RESULT = 36526 + uwscDate FEND ////////////////////////////////////////////////// // 【引数】 // num // format // 【戻値】 // ////////////////////////////////////////////////// FUNCTION xlTEXT(num, format) DIM Excel = CREATEOLEOBJ("Excel.Application") RESULT = Excel.Evaluate("TEXT(<#DBL>" + num + "<#DBL>, <#DBL>" + format + "<#DBL>)") FEND