gooブログが終了してしまう記事を投稿した内容の続きを、お話しておきます。
VBAマクロでは、使用データをこのブログからHTMLファイルで抽出しました。
それを加工できなくなったので、グーグルドライブからデータをダウンロード。
データ自体はテキストファイルですが、タブレットで外出先から利用するのだ。
そして、データは頻繁に更新されるので使い終わると削除することにしました。
VBAマクロではファイル削除のコードは、よく使われておりネットで探せます。
これを参考に必要なコードを打ちますが、時間に応じて削除したくないのです。
つまり、日中の外出時間がある程度決まっているので、この時間帯は省きたい。
そういった条件をコードに書き込みたくなって、ネットでググって探しました。
"今何時?"と回答してくれるのは、”Hour(Now())”のコマンドが便利なのです。
このコマンドは、0~23の値で回答するので、これを使って条件式を考えます。
それで、条件は18時以降か6時以前ならファイルを削除することにしました。
Sub FileExistingKill() 'ファイル:HOGE.txtを指定の時間外で削除
Dim FSO As Object, f As Object, cnt As Long, strFilePath As String
strFilePath = Environ("HOMEDRIVE")
strFilePath = strFilePath & Environ("homepath")
strFilePath = strFilePath & "\Downloads"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each f In FSO.GetFolder(strFilePath).Files
If f.Name = "HOGE.txt" Then
Select Case Hour(Now())
Case Is >= 18
f.Delete(True)
Exit For
Case Is <= 6
f.Delete(True)
Exit For
End Select
End If
Next f
Set FSO = Nothing 'FSOをメモリから解放
End Sub
このファイル削除では、”FileSystemObject”の”Delete”コマンドを使います。
Delete(True)で指定すれば、読み取り専用属性のファイルも強制的に削除だ。
この構文では、条件分岐式が”If”文と”SelecyCase”文の二つが使われています。
”If”文でファイル名が一致したら、次に複数の条件分岐で処理を行う構文です。
後は、処理が完了しますので、”For Each”の繰返しの処理を抜ける手順なのだ。
というわけで、久しぶりにマクロのコードを作ったから、投稿をアップするぜ。
この構文では、特定の時間帯を指定することによって、ファイル削除、つまり処理を実行する条件式を設定したマクロなのですが、これ以外にも使い道はあるような気がするので、参考にしてもらいたいと思うのでした。
0 件のコメント:
コメントを投稿