18

ライブラリのお裾分けです。
下記[経緯]の、特に太字部分をきっかけに投稿しました。
ノード「スクリプト実行」に転記して使用します。

 

命名(名前欄用)

  • 日付取得(前月当月翌月の初日末日)

 

概要(注釈タブ用)

今日もしくは指定日の当月初日/翌月初日/前月末日等を取得します。
日付は常にYYYY/MM/DD形式で出力します。WinActorの設定に左右されません。
不要な情報はスクリプトタブで適宜コメントアウトしてください。
使用頻度が少ない翌月分はコメントアウト済みです。
指定日側はオプションです。日付の指定がなければ今日を採用します。
Excelに入力して日付と認識される表記に概ね対応します。

 

スクリプト(スクリプトタブ用)

SetUMSVariable $今日$, DateSerial(Year(Date()), Month(Date()), Day(Date()))

SetUMSVariable $前月初日$, DateSerial(Year(Date()), Month(Date()) - 1, 1) ' ★
SetUMSVariable $前月末日$, DateSerial(Year(Date()), Month(Date()), 0) ' ★

SetUMSVariable $当月初日$, DateSerial(Year(Date()), Month(Date()), 1) ' ★
SetUMSVariable $当月末日$, DateSerial(Year(Date()), Month(Date()) + 1, 0) ' ★

'SetUMSVariable $翌月初日$, DateSerial(Year(Date()), Month(Date()) + 1, 1)
'SetUMSVariable $翌月末日$, DateSerial(Year(Date()), Month(Date()) + 2, 0)

d = !指定日!

' 日付の指定がなければ今日を採用
If d = "" Then
d = Date()
End If

'SetUMSVariable $指定日前月初日$, DateSerial(Year(d), Month(d) - 1, 1)
'SetUMSVariable $指定日前月末日$, DateSerial(Year(d), Month(d), 0)

'SetUMSVariable $指定日当月初日$, DateSerial(Year(d), Month(d), 1)
'SetUMSVariable $指定日当月末日$, DateSerial(Year(d), Month(d) + 1, 0)

'SetUMSVariable $指定日翌月初日$, DateSerial(Year(d), Month(d) + 1, 1)
'SetUMSVariable $指定日翌月末日$, DateSerial(Year(d), Month(d) + 2, 0)

 

経緯

  • WinActor内外を問わず、そこそこニーズがある
  • よくよく考えれば、自力で辿り着ける範囲
  • 何通りかある考えかたは、Googleせんせーがすぐに教えてくれる
    https://www.google.com/search?q=月初+月末+日付
  • WinActorでも標準ライブラリとかを少しだけ工夫して組み合わせればゴールに辿り着ける
    https://winactor.com/questions/?q=月末|月初
  • わたし自身もかなり前から工夫して使用中
    工夫なんてしなくて済めば良いのに、、
    1ライブラリで一瞬だったら良いのに、、
  • 最近の投稿を機に、調べて自作
  • 頻出4パターンを厳選(★部分)
    基準日を指定したパターンにも対応
  • シナリオ共有は.ums**しかアップロードできない
    わたし自身はあいにく.ums**でアップロードする訳にいかない
  • 受講したセミナーと、周りの投稿に触発されてアウトプット
  • スイートライブラリあたりに採用されないだろうか

 

指定日への入力テスト結果

  • ◎ 2020/04/01
  • ◎ 2020/4/1
  • ◎ 2020/4
  • ◎ 4/1
  • ◎ 4/1/2020
  • ◎ 4-1-2020
  • ◎ 1-4-20
  • ◎ 2020年4月1日
  • ◎ 20年4月1日
  • ◎ 20年04月1日
  • ◎ 20年4月
  • ◎ 令和2年4月1日
  • ◎ 令和2年4月01日
  • ◎ 令和元年4月
  • × 4.1.2020
  • × 令和元年第1四半期
  • × 令和2年4/01
  • × 2020/4月1

 

メリデメ

  • ◎ 速い(一瞬)
  • ◎ 指定日のオプションを使えば、考え得るパターンを網羅可能
  • ◎ 指定日が多くの表記に対応
  • ▲ 変数名の初期設定箇所が多め
  • ▲ 状況に応じて、スクリプトタブでコメントアウトを加減することになる

 

関連スレッド

https://winactor.com/questions/question/学べそうなセミナー情報:【超・上級スクリプト/

https://winactor.com/questions/question/vbsをwinactorライブラリに加工する方法/

 

リファレンスサイト

VBScript関数リファレンス

DateSerial Year Month Day
https://www.kanaya440.com/contents/script/vbs/function/date/date_serial.html
https://www.kanaya440.com/contents/script/vbs/function/date/year.html
https://www.kanaya440.com/contents/script/vbs/function/date/month.html
https://www.kanaya440.com/contents/script/vbs/function/date/day.html

[VBScript] : バヤシタ

前月当月翌月の月初月末の日付を取得する方法
https://bayashita.com/p/entry/show/81
https://bayashita.com/p/entry/show/82

 

ユーザーフォーラムのサークル機能を軸に、アウトプットを促進する運動を展開してます。
お時間のあるときにでも覗いてみてください。
https://winactor.com/questions/circle/

anothersolution 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。