電子申告データ(xtx)を利用する方法

酒井孝志税理士事務所 〒921-8102 金沢市西大桑町9-12 Tel:070-4330-3120 sakai@takassan.sakura.ne.jp お問合せ先メール ここをクリック


 e-Taxで提出したデータは、「受付システム」の「メッセージボックス一覧」等よりダウンロードできます。
 「xtx」という拡張子のファイルでダウンロードされます。このファイルを利用して事務効率化に挑戦!

e-Taxソフト
 左図は、ダウンロード版e-Taxソフトの場合の取得方法です。
  1.  e-Taxソフトを起動すると、利用者ファイルの選択する画面が表示されます。該当する利用者ファイルを選択します。
     初めて利用する場合は新規に作成し、以前利用したが画面のリストに表示されない場合は「既存の利用者を探して開く」ボタンから、作成済のファイル(拡張子が「ncc」のファイル)を探し起動します。
  2.  「メッセージボックス」メニューの「メッセージボックス」ボタンをクリックすると、メッセージの一覧が表示されます。
  3.  メッセージの「詳細表示」を開いて、「ダウンロード」ボタンをクリックすると、「xtxファイル」が取得できます。
 ダウンロードしたファイルは、「e-Taxソフト」に「組み込み」をして編集することができます。

xtx
 「xtxファイル」は、Windowsに標準装備されているソフト「メモ帳」で、内容が確認できます。
 「xtxファイル」の仕様書は、「国税電子申告・納税システム」のサイトにあります。
 1から作るのは大変なので、「ダウンロード」や「書き出し」した「xtxファイル」を参考にVBAで作成してみたいと思います。




 本来の手順は、左図のとおりであるが、作成した「xtxファイル」をVBAで加工し、e-Taxソフトに組み込みすることにより入力の省力化を図ることができます。

 上図で作成したデータは、「書き出し」の処理をすることで「xtxファイル」を出力することができます。
<?xml version="1.0" ・・・ ?>
<DATA id="DATA" xmlns="http://xml.e-tax.nta.go.jp/XSD/gensen" xmlns:gen="http://xml.e-tax.nta.go.jp/XSD/general" xmlns:kyo="http://xml.e-tax.nta.go.jp/XSD/kyotsu" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><PGE0055 VR="15.0.0" id="PGE0055"><CATALOG id="CATALOG">・・・
 
 ちょっと見づらいので整形(一部省略)
<?xml version="1.0" ・・・ ?>
 <DATA ・・・">
  <PGE0055 ・・・>
   <CATALOG ・・・>
     ・・・
   </CATALOG>
  <CONTENTS id="CONTENTS">
   <IT VR="1.4" id="IT">
    <ZEIMUSHO ID="ZEIMUSHO">
     <gen:zeimusho_CD>07101</gen:zeimusho_CD>
     <gen:zeimusho_NM>金沢</gen:zeimusho_NM>
    </ZEIMUSHO>
    <NOZEISHA_ID ID="NOZEISHA_ID">1234567812345678</NOZEISHA_ID>
    <NOZEISHA_NM_KN ID="NOZEISHA_NM_KN">ミョウジ ナマエ</NOZEISHA_NM_KN>
    <NOZEISHA_NM ID="NOZEISHA_NM">名字 名前</NOZEISHA_NM>
    <NOZEISHA_ZIP ID="NOZEISHA_ZIP"><gen:zip1>921</gen:zip1><gen:zip2>1234</gen:zip2></NOZEISHA_ZIP>
    <NOZEISHA_ADR_KN ID="NOZEISHA_ADR_KN">イシカワケンカナザワシ○○○○○マチ○-○</NOZEISHA_ADR_KN>
    <NOZEISHA_ADR ID="NOZEISHA_ADR">石川県金沢市○○○-○</NOZEISHA_ADR>
    <NOZEISHA_YAGO_KN ID="NOZEISHA_YAGO_KN">ヤゴウジムショ</NOZEISHA_YAGO_KN>
    <NOZEISHA_YAGO ID="NOZEISHA_YAGO">屋号事務所</NOZEISHA_YAGO>
    <NOZEISHA_TEL ID="NOZEISHA_TEL"><gen:tel1>999</gen:tel1><gen:tel2>9999</gen:tel2><gen:tel3>9999</gen:tel3></NOZEISHA_TEL>
    <SEIBETSU ID="SEIBETSU"><kubun_CD>1</kubun_CD><kubun_NM>男</kubun_NM></SEIBETSU>
    <BIRTHDAY ID="BIRTHDAY"><gen:era>3</gen:era><gen:yy>35</gen:yy><gen:mm>3</gen:mm><gen:dd>3</gen:dd>
    </BIRTHDAY>
    <SETAINUSHI_NM ID="SETAINUSHI_NM">名字 名前</SETAINUSHI_NM>
    <SETAINUSHI_ZOKU ID="SETAINUSHI_ZOKU">本人</SETAINUSHI_ZOKU>
    <SHOKUGYO ID="SHOKUGYO">○○士</SHOKUGYO>
    <KANPU_KINYUKIKAN ID="KANPU_KINYUKIKAN">
     ・・・
    </KANPU_KINYUKIKAN>
    <TETSUZUKI ID="TETSUZUKI"><procedure_CD>PGE0055</procedure_CD>
     <procedure_NM>給与所得・退職所得等の所得税徴収高計算書(納期特例分)</procedure_NM>
    </TETSUZUKI>
    <KEISANSHO_KBN ID="KEISANSHO_KBN"><kubun_CD>91</kubun_CD></KEISANSHO_KBN>
   </IT>
   <GEA060 VR="5.0" id="GEA060-1" page="1" sakuseiDay="2021-04-30" sakuseiNM="名字 名前" softNM="ntaclient">
     <AAA00000>
      <AAA00100 IDREF="KEISANSHO_KBN"/>
      <AAA00120>
       <AAA00130><gen:era>5</gen:era><gen:yy>3</gen:yy><gen:mm>1</gen:mm></AAA00130>
       <AAA00140><gen:era>5</gen:era><gen:yy>3</gen:yy><gen:mm>6</gen:mm></AAA00140>
      </AAA00120>
     </AAA00000>
     <AAB00000>
      <AAB00100><gen:era>5</gen:era><gen:yy>3</gen:yy></AAB00100>
      <AAB00110 IDREF="ZEIMUSHO"/>
      <AAB00130>
       <AAB00140 IDREF="NOZEISHA_ADR"/>
       <AAB00150 IDREF="NOZEISHA_TEL"/>
       <AAB00160 IDREF="NOZEISHA_NM"/>
      </AAB00130>
     </AAB00000>
     <AAC00000>
      <AAC00100>
       <AAC00110><kubun_CD>01</kubun_CD></AAC00110>
      </AAC00100>
      <AAC00120>
       <AAC00130><gen:era>5</gen:era><gen:yy>3</gen:yy><gen:mm>1</gen:mm><gen:dd>25</gen:dd></AAC00130>
       <AAC00140><gen:mm>6</gen:mm><gen:dd>25</gen:dd></AAC00140>
      </AAC00120>
      <AAC00170>30</AAC00170>
      <AAC00180>8959947</AAC00180>
      <AAC00190>61340</AAC00190>
     </AAC00000>
     <AAD00000>
      <AAD00100>
       <AAD00110><kubun_CD>02</kubun_CD></AAD00110>
      </AAD00100>
     </AAD00000>
     <AAE00000>
      <AAE00100>
       <AAE00110><kubun_CD>06</kubun_CD></AAE00110>
      </AAE00100>
     </AAE00000>
     <AAF00000>
      <AAF00100>
       <AAF00110><kubun_CD>07</kubun_CD></AAF00110>
      </AAF00100>
     </AAF00000>
     <AAG00000>
      <AAG00100>
       <AAG00110><kubun_CD>08</kubun_CD></AAG00110>
      </AAG00100>
     </AAG00000>
     <AAH00000>
      <AAH00100>
       <AAH00110><kubun_CD>03</kubun_CD></AAH00110>
      </AAH00100>
     </AAH00000>
     <AAI00000>
      <AAI00100>
       <AAI00110><kubun_CD>04</kubun_CD></AAI00110>
      </AAI00100>
     </AAI00000>
     <AAJ00000>
      <AAJ00100>
       <AAJ00110><kubun_CD>05</kubun_CD></AAJ00110>
      </AAJ00100>
     </AAJ00000>
     <AAK00000>
      <AAK00100 AutoCalc="1">61340</AAK00100>
      <AAK00120 AutoCalc="1">61340</AAK00120>
     </AAK00000>
    </GEA060>
   </CONTENTS>
  </PGE0055>
 </DATA>
 
 国税庁HPに「e-Tax仕様書」というものがあります。
 この「xtxファイル」の内容と仕様書を見比べてみれば、おおよそ何が書かれているか理解できると思います。
 仕様書の見方が分からない場合でも、e-Taxソフト」に入力した内容と、「xtxファイル」の内容を見比べてみれば・・・。


前処理
 作成するxtxファイルに入力する値をエクセルにセットします。
 (エクセルで作った給与計算用のシステムからデータを引用するように作れば、更に省力化できます。)
 国税庁の仕様書は、エクセルで作成されているので、この仕様書を加工した方が簡単に作成できます。
Sub Kako()
 Dim adoobj As Object
 Dim vxtx, As String
 With ThisWorkbook.Worksheets("所得税徴収高計算書_納期特例")
  vfile = ThisWorkbook.Path & "\計算書.xtx"
  vTXT = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & "・・・ ?>"
  vTXT = vTXT & "<DATA ・・・ >"
  vTXT = vTXT & "<PGE0055 ・・・ >"
  vTXT = vTXT & "<CATALOG ・・・ >"
  vTXT = vTXT & " ・・・ "
  vTXT = vTXT & "</CATALOG>"
    ・・・ 
  vTXT = vTXT & "<AAC00000>"
  vTXT = vTXT & "<AAC00100>"
  vTXT = vTXT & "<AAC00110>01"
  vTXT = vTXT & "</AAC00100>"
  vTXT = vTXT & "<AAC00120>"
   vera = ""
   If Format(.Range("C99"), "ggg") = "令和" Then vera = 5
  vTXT = vTXT & "<AAC00130><gen:era>" & vera & "</gen:era>"
  vTXT = vTXT & "<gen:yy>" & Format(.Range("C99"),"e") & "</gen:yy>"
  vTXT = vTXT & "<gen:mm>" & Format(.Range("C99"),"m") & "</gen:mm>"
  vTXT = vTXT & "<gen:dd>" & Format(.Range("C99"),"d") & "</gen:dd>"
  vTXT = vTXT & "</AAC00130>"
  vTXT = vTXT & "<AAC00140>"
  vTXT = vTXT & "<gen:mm>" & Format(.Range("C10O"),"m") & "</gen:mm>"
  vTXT = vTXT & "<gen:dd>" & Format(.Range("C10O"),"d") & "</gen:dd>"
  vTXT = vTXT & "</AAC00140>"
  vTXT = vTXT & "</AAC00120>"
  vTXT = vTXT & "<AAC00170>" & .Range("C102") & "</AAC00170>"
  vTXT = vTXT & "<AAC00180>" & .Range("C103") & "</AAC00180>"
  vTXT = vTXT & "<AAC00190>" & .Range("C104") & "</AAC00190>"
  vTXT = vTXT & "<AAC0000O>"
  vTXT = vTXT & "<AAD00000>"

  vTXT = vTXT & ""

   AAC00140_m1stymd = .Range("C100")
   vTXT = vTXT & "" & Format(AAC00140_m1stymd, "m") & "" & Format(AAC00140_m1stymd, "d") & ""
   vTXT = vTXT & ""
   '
   AAC00170_m1Jinin = .Range("C102")
   vTXT = vTXT & "" & AAC00170_m1Jinin & ""
   '
   AAC00180_m1Shiharai = .Range("C103")
   vTXT = vTXT & "" & AAC00180_m1Shiharai & ""
   '
   AAC00190_m1Zeigaku = .Range("C104")
   vTXT = vTXT & "" & AAC00190_m1Zeigaku & ""
   vTXT = vTXT & ""
  End If


    ・・・
  vTXT = vTXT & "</GEA060>"
  vTXT = vTXT & "</CONTENTS>"
  vTXT = vTXT & "</PGE0055>"
  vTXT = vTXT & "</DATA>"
  Set adoobj = CreateObject("ADODB.Stream)
  adoobj.Open
  adoobj.Charset = "UTF-8"
  adoobj.Type = adTypeText
  adoobj.WriteText vTXT,adWriteChar
  adoobj.SaveFile vfile,adSaveCreateOverWrite
  adoobj.Open
  Set adoobj = Nothing
End Sub
       
 左のように(一部省略して「・・・」で表示しています。)、変数(例の場合、vTXT)に出力したいテキストを書き込みます。

vera = ""
(出力する値を初期化します。・・・当処理の前に処理した値が記録されないようにするため)

If Format(.Range("C99"), "ggg") = "令和" Then vera = 5
(エクセルの「C99」のセルの値を元号の表示形式で指定した値が「令和」の場合、「vera」変数に5を入力する。

vTXT = vTXT & "<AAC00130><gen:era>" & vera & "</gen:era>"
(「vera」変数の値を、「<AAC00130><gen:era>」と「</gen:era>」の間に入力し、書き込むテキストに追加します。

 WriteTextでファイルに書き込み、SaveFileでファイルを保存します。

   出力した「xtxファイル」は、「e-Taxソフト」に組み込みして、修正が必要であれば編集して、電子申告に使用します。
   極力、手作業による入力をなくす方法を考えて、VBAで処理することにより、入力の省力化・誤入力の防止を図ることができます。