2025年10月11日土曜日

久しぶりにマクロコードを書いてみたのですが、複数の条件分岐式を組み合わせて、処理の高度化を行うのは便利だな ー ”Hour(Now())”(VBA・マクロ)

          
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 件のコメント:

コメントを投稿