###自動でテキストにTODOを書いて残しておきたいなあ
業務中にテキストファイルに今日あったことや備忘録として書き溜めて保存しています。
毎日作るのが面倒なのと、単にずっと書き溜めていくと、後から見るのが大変という理由で、
自動でそれらをさせたいなあと思い、軽い気持ちで始めました。
ところが振り分けをする際のロジックが意外と面倒でした。
自力で導き出したいのですが、
小1時間ほど悩み調べようか迷い、そして停止しました。
考え方のヒント等、教えていただけますか。。。
(別のコードでも大丈夫です。多分。)
###前提
・勤務日は 月曜日から金曜日 とします。この期間を 勤務日週 とします。
・勤務日週ごとにフォルダ分けする。
・勤務日毎 1ファイル 作成する。(タイムスケジューラでログイン時に実行させる。)
・ファイルは作成時、勤務日週ごとのフォルダに振り分けて格納する。
・休日出勤したらその日の分も作られる。(重要)
・土日とかをカウントとかはしたくない。
・数式的な解法でやってみたい。(アホだけど)
WindowsなのでVBSを使いました。なんか手軽だと思いました。
現在の状況
フォルダ内(直でいっぱいはいっている・・・) C:\Users\hoge\Desktop\Note 20190301_hoge.txt ,20190304_hoge.txt ,20190305_hoge.txt ... . . . 20190320_hoge.txt ,20190322_hoge.txt ,20190325_hoge.txt ,20190326_hoge.txt ...
###実現したいこと
以下のようにテキストファイルをファイルを振り分けたい
例えば今月の1日からフォルダ分けしてみる場合、以下の様な、振り分け方になると思います。
1.3月分フォルダを作成(月ごとにわける)
C:\Users\hoge\Desktop\Note\201903
2.3月分フォルダ以下に勤務日週ごとのフォルダを作成し、格納する。
1週目 (金曜日のみなので1ファイル分入るはず) C:\Users\hoge\Desktop\Note\201903\Week1 20190301_hoge.txt 2週目 (5ファイル分入るはず) C:\Users\hoge\Desktop\Note\201903\Week2 20190304_hoge.txt ,20190305_hoge.txt ,20190306_hoge.txt ... 3週目(5ファイル分入るはず) C:\Users\hoge\Desktop\Note\201903\Week3 勤務日分毎日ここにはいる 4週目(4ファイル分入るはず) C:\Users\hoge\Desktop\Note\201903\Week4 今月祝日はもちろんはいらない 5週目(今日分含んで2ファイル) C:\Users\hoge\Desktop\Note\201903\Week5 20190325_hoge.txt ,20190326_hoge.txt
###考えたこと・試したこと
とりあえず、思考停止してしまったコードです・・・
Option Explicit Public Sub main hoge() Dim today Dim wkFolderName '週ごとのフォルダ名 today = Date() 'とりあえず、これができればニッコリして寝れる '振り分け先のフォルダ名がここで取れれば良い ex) Week1, Week2, Week3 ... wkFolderName = getFuriwakeWeekName(today) Call Msgbox("振り分け先は" & wkFolderName & "です。", vbInformation, "Todo振り分け先の確認") End Sub '引数は今日として分ける先のフォルダ名を判定する Private Function getFuriwakeWeekName(today) 'return any one of Week1, Week2, Week3, Week4, Week5 (Week6) ... Dim firstday '当月初めの日付 Dim weekday '曜日 firstday = DateSerial(Year(Date()), Month(Date()), 1) 'なんか、日曜日は1で始まるインデックスが返る関数があった。 '今月は金曜日(=5)から始まったらしい weekday = weekday(firstday) '月初が土であり、作成した場合、次週はweek2 '月初が日曜日であれば、次週はweek1 '月初がそれ以外であれば、次週はweek2 ' '返ってくるインデックス '日⇒土 '1 2 3 4 5 6 ' '月の始まりが金曜日 '1週目の1日目 'weekday = weekday(firstday) ⇒ 5?(金曜日) '今日が26日 '今日は5週目の2日目 'weekday = weekday(today) ⇒ 3?(火曜日) 'getFuriwakeWeekName = "Week" & CStr( ) End Function
回答4件
あなたの回答
tips
プレビュー