e-Tax確定申告書作成コーナーの保存時に作成されるファイル名にお客さまの名前と時刻を付けて管理

かなり長いタイトルとなってしまいました。
このように書かないと、何のことだかわからないと思います。
いや、長過ぎてかえってわからないかもしれませんが、そういう内容です。

確定申告書作成コーナーで保存されるdataファイル

行政機関が作成するソフトの中には使い勝手が悪いと感じるものもありますが、国税庁のe-Taxについていえばかなり使いやすいと思っています。

質問形式で入力を進めていけば、所得税、消費税、贈与税の申告書が出来上がっていきます。
一般的な申告書の作成であれば、これだけでこと足りるのではないかと感じます。

また、UIも少しずつ使いやすく変更されているようです。

税理士の代理送信にも対応しています。

引用:国税庁Webサイト

ただ、少し不満を感じるのは、入力データを一時保存するときに作成されるファイル名です。

e-Taxの確定申告書作成コーナーで申告書を作成している途中で、入力データを一時保存する場面はよくあります。
いったんほぼ完成させ、見直しをする前にデータ保存をしておくと便利です。

この保存したデータを読み込んで、作成を再開することができます。

引用:国税庁Webサイト

このとき保存されるファイル名が

  • 所得税の場合 r6syotoku.data
  • 所得税+青色決算の場合 r6syotoku_kessan.data

のように決められています。

すでにデータがある場合には、r6syotoku(1).dataと、拡張子の前に番号が付される仕組みです。

自分の確定申告書だけであれば、これでも問題ありませんが、お客さまのデータについてはお客様ごとに区分して管理したいものです。

VBAマクロで「お客様名」+「ファイル名」+「時刻」にリネーム

お客さまのデータであれば、ファイル名の先頭にお客さまのお名前を付ければ解決です。
また、作成日時がわかるとデータの取り違いが防げます。

そこで、

  • ファイル名の先頭に「お客様名」
  • ファイル名の末尾に「保存年月日時刻」

を付けるマクロを作成することにしました。

プログラムとしては、pythonなどでもよいのでしょうが、一番ハードルの低いVBAマクロにしてみました。

書いてくれたのはChatGPT

今までの仕事でマクロを書く機会が多かったため、プログラムを書くことには抵抗がありません。
財務捜査でマクロは必須技能と思っています。

しかし、自分で書くとなるとそれなりに時間もかかりますし、エラーが起こるかもしれません。
そこで、ChatGPTに書いてもらうことにしました。

基本的なプロンプトは、こちらです。

「C:\download」フォルダに最も最後に保存したファイルの名前をリネームします。
拡張子は .data です。
このファイルの冒頭に任意の名前を付け、ファイルの末尾に保存した日時時刻をyyyyMMddhhmmssとして付したいと思っています。
任意の名前は、入力するプロンプトを用意します。

完成したマクロはこちらです。

Sub RenameLatestDataFile()
    Dim folderPath As String
    Dim newPrefix As String
    Dim fileSystem As Object
    Dim folder As Object
    Dim file As Object
    Dim latestFile As Object
    Dim latestDate As Date
    Dim originalFileName As String
    Dim newName As String
    Dim saveDateTime As String

    ' フォルダパス
    folderPath = "C:\download\"
    If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"

    ' 任意の新しい名前の接頭辞を入力
    newPrefix = InputBox("お客さま名:", "名前設定")
    If newPrefix = "" Then Exit Sub

    ' ファイルシステムオブジェクトを作成
    Set fileSystem = CreateObject("Scripting.FileSystemObject")
    Set folder = fileSystem.GetFolder(folderPath)

    ' 最新ファイルを探す
    latestDate = #1/1/1900#
    Set latestFile = Nothing

    For Each file In folder.Files
        If LCase(fileSystem.GetExtensionName(file.Name)) = "data" Then
            If file.DateLastModified > latestDate Then
                latestDate = file.DateLastModified
                Set latestFile = file
            End If
        End If
    Next file

    If latestFile Is Nothing Then
        MsgBox "指定フォルダ内に .data ファイルが見つかりませんでした。", vbExclamation
        Exit Sub
    End If

    ' 保存日時時刻を yyyyMMddhhmmss 形式で取得
    saveDateTime = Format(latestDate, "yyyymmddhhmmss")

    ' 元のファイル名(拡張子なし)を取得
    originalFileName = fileSystem.GetBaseName(latestFile.Name)

    ' 新しい名前を作成
    newName = folderPath & newPrefix & "_" & originalFileName & "_" & saveDateTime & ".data"

    ' ファイル名を変更
    Name latestFile.Path As newName

    MsgBox "ファイルがリネームされました:" & vbCrLf & newName, vbInformation
End Sub

実行結果

確定申告書作成コーナーからダウンロードしたファイルはこちらになります。
これだけでは、どの方のデータなのかわかりません。

そこで、先ほどのマクロを実行します。
お客さまの名前は仮に「国税」としました。

実行結果です。

本日のまとめ

生成AIの登場以後、プログラムを書くのが画期的に簡単になったと感じます。
その中でもChatGPTはかなり正確だと思っています。

確定申告書作成コーナーの保存データの管理に不便を感じたら、速攻でプログラムを書いてもらい業務改善ができるというのは嬉しい限りです。