UiPathでよく使う年、月、日の抽出です。
基本的にフォルダパスかファイル名に必ずと言っていいほど年月日が入るので、「コードを呼び出し」アクティビティの中に以下のコードを全部貼り付けて使っています。
例えば、毎日ファイルを作成し、次のようなフォルダにその日の日付でファイルを保存するといった場合に利用できます。
¥¥サーバ名¥2021年¥5月¥日報05月14日.xls
このようなパスに以下のような変数を使って動的に保存できます。
¥¥サーバ名¥& This_year & "年¥" & this_month_digit & "月¥日報" & this_month & "月" & day_today & "日.xls"
今日の日付を基準に今日、昨日、今月、先月を求めています。
Dim dt_now As Date '現在の日付
Dim nendo As String '年度処理用(年度初めが4月の場合)
Dim this_year As String '
Dim leap_year As Integer 'うるう年計算用
'今日の日付(元となる日付を取得)
dt_now = DateTime.Now
'うるう年の計算用
leap_year = Year(Now)
'今日(01日)
day_today = dt_now.Tostring("dd")
’昨日
day_before = DateAdd("d",-1,now).tostring("dd")
'今月1桁表記(1月)
this_month_digit = dt_now.Tostring("%M")
'今月2桁表記(01月)
this_month = dt_now.Tostring("MM")
'先月1桁表記(1月)
last_month_digit = dt_now.AddMonths(-1).tostring("%M")
'先月2桁表記(01月)
last_month = dt_now.AddMonths(-1).tostring("MM")
'年下2桁&今月2桁表記(2101)= 2021年1月
yymm = dt_now.ToString("yyMM")
'年下2桁&先月2桁表記(2012) = 2020年12月
last_yymm = dt_now.AddMonths(-1).tostring("yyMM")
'今年4桁
CY = dt_now.ToString("yyyy")
'FY (FY21表記)
this_year = Dateadd("m",-3,Now).ToString("yy")
FY = "FY"&this_year
'各月の最終日 4月、6月、9月、11月なら最終日は30日 それ以外なら31日 2月なら28日or29日を計算
If last_month = "4" Or last_month = "6" Or last_month = "9"Or last_month = "11" Then
last_day = "30"
ElseIf last_month = "2" Then
If leap_year Mod 4 = 0 Then
last_day = "29"
Else
last_day = "28"
End If
Else
last_day = "31"
End If
引数は全て「出力」でstring型にします。
ファイル名やパス名に年月日が入っていることが多かったので、毎回これを最初に入れています。
代入アクティビティだらけになるよりはいいかなと思ったのと、計算で処理時間がかかるという事も(体感では)ありませんでした。