サイトアイコン わんすけに聞いてみる

和暦で日時を表示してみる。[RPA風vbsめーかー]

上のメニューにある『RPA風vbsめーかー』のサンプル

今回は、和暦で日付を表示してみる。

1.現在の日時を取得する。

左のアクションメニューから『現在の日時を取得する』を選んでそのまま確定。

2.形式を指定して日付を文字列に変換

『形式を指定して日付を文字列に変換』を選んで、変換する日付データの変数を1.で追加されたCurrentTimeに変更してお好きな表示形式を選んで確定。(今回は『和暦 年月日』にしてみる。)

3.メッセージボックスを表示する

『メッセージボックスを表示する』を選んで、メッセージ内容の変数を2.で追加されたDateStrを選択して確定。

 

↓↓↓見た目はこうなる。

※ 追加したアクションはドラッグ&ドロップで並べ替えができます。

『保存する』を押してダウンロードすると、こんなスクリプトが保存されます。

' #### 変数定義 ####
Dim CurrentTime, DateStr

' #### 変数初期値設定 ####

' #### シナリオ ####
' "現在の日時を取得する"
CurrentTime = Now

' "形式を指定して日付を文字列に変換"
DateStr = Format(CurrentTime, "ggggmm月dd日")

' "メッセージボックスを表示する"
Msgbox DateStr, vbInformation, "わんすけすくりぷと - vbscript"

' #### 関数定義 ####
' 形式を指定して日付を文字列に変換
Function Format(TargetDate, Pattern)
  Dim Rslt, YYYY, M, MM, D, DD, H, HH, N, NN, S, SS, DDD, DDDD, MMM, MMMM, GGGG, CCCC
  On Error Resume Next
  
  If IsDate(TargetDate) Then
    If Len(Pattern) = 0 Then
      Format = FormatDateTime(Now, 0)
    Else
      Rslt = LCase(Pattern)
      
      YYYY = Year(TargetDate)
      M = Month(TargetDate)
      MM = Right("0" & M, 2)
      D = Day(TargetDate)
      DD = Right("0" & D, 2)
      H = Hour(TargetDate)
      HH = Right("0" & H, 2)
      N = Minute(TargetDate)
      NN = Right("0" & N, 2)
      S = Second(TargetDate)
      SS = Right("0" & S, 2)
      ' 曜日・月の英表記は他の置換と干渉するから記号化
      WeekIndex = Weekday(TargetDate) - 1
      WWW = Array("日", "月", "火", "水", "木", "金", "土")(WeekIndex)
      WWWW = WWW & "曜日"
      DDDkey = "%%%" & WeekIndex
      DDD = Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")(WeekIndex)
      DDDDkey = "%%%%" & WeekIndex
      DDDD = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")(WeekIndex)
      MonthIndex = M - 1
      MMMkey = "%%%%%" & MonthIndex
      MMM = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")(MonthIndex)
      MMMMkey = "%%%%%%" & MonthIndex
      MMMM = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")(MonthIndex)
      ' 和暦
      If TargetDate <= DateSerial(1912, 7, 29) Then
        GGGG = "明治" & Year(TargetDate) - 1867 & "年"
      ElseIf TargetDate >= DateSerial(1912, 7, 30) And TargetDate <= DateSerial(1926, 12, 24) Then
        GGGG = "大正" & Year(TargetDate) - 1911 & "年"
      ElseIf TargetDate >= DateSerial(1926, 12, 25) And TargetDate <= DateSerial(1989, 1, 7) Then
        GGGG = "昭和" & Year(TargetDate) - 1925 & "年"
      ElseIf TargetDate >= DateSerial(1989, 1, 8) Then
        GGGG = "平成" & Year(TargetDate) - 1988 & "年"
      End If
      ' 年初来日数
      CCCC = DateDiff("d", DateSerial(YYYY, 1, 1), TargetDate) + 1
      
      Rslt = Replace(Rslt, "yyyy", YYYY)
      Rslt = Replace(Rslt, "mmmm", MMMMkey)
      Rslt = Replace(Rslt, "mmm", MMMkey)
      Rslt = Replace(Rslt, "mm", MM)
      Rslt = Replace(Rslt, "m", M)
      Rslt = Replace(Rslt, "dddd", DDDDkey)
      Rslt = Replace(Rslt, "ddd", DDDkey)
      Rslt = Replace(Rslt, "dd", DD)
      Rslt = Replace(Rslt, "d", D)
      Rslt = Replace(Rslt, "wwww", WWWW)
      Rslt = Replace(Rslt, "www", WWW)
      Rslt = Replace(Rslt, "hh", HH)
      Rslt = Replace(Rslt, "h", H)
      Rslt = Replace(Rslt, "nn", NN)
      Rslt = Replace(Rslt, "n", N)
      Rslt = Replace(Rslt, "ss", SS)
      Rslt = Replace(Rslt, "s", S)
      Rslt = Replace(Rslt, "cccc", CCCC)
      
      Rslt = Replace(Rslt, "gggg", GGGG)
      Rslt = Replace(Rslt, MMMMkey, MMMM)
      Rslt = Replace(Rslt, MMMkey, MMM)
      Rslt = Replace(Rslt, DDDDkey, DDDD)
      Rslt = Replace(Rslt, DDDkey, DDD)
      Format = Rslt
    End If
  Else
    Msgbox "日付を文字列に変換処理には、日付データを指定して下さい。", vbInformation, "わんすけ すくりぷと の警告"
    Format = ""
  End If
  
  If Err.Number > 0 Then
    Format = ""
    Msgbox "日付を文字列に変換に失敗。" & vbNewLine & Err.Description, vbInformation, "わんすけ すくりぷと の警告"
    Err.Clear
  End If
  On Error GoTo 0
End Function

実行すると、こうなる。

モバイルバージョンを終了