HELP

共通マクロ書式

Excel書式

基本仕様

  • Excelファイルをオープンすると、そのファイルを識別するためのキーを返却します。以後、識別キーを使って処理を行います。(識別キーはひとつだけメモリに記憶されますので省略することもできます。)

  • マクロでオープンされたExcelファイルで、クローズされていないファイルがある場合は、ファイルの繰り返し処理の最後、又は設定の実行の最後でクローズされます。

  • シート書式

    • シート名は「Sheet1/Sheet2」のように/で区切って複数指定することが可能です。

    • シート名は直接シート名を指定する以外に、以下の書式が使用できます。

      説明 書式 備考
      すべてのシート [AllSheets]
      現在のシート [ActiveSheet] Excelファイルに保存されているアクティブシート。
      番号指定 [SheetNo(番号)] 括弧内にシート番号を指定します。[SheetNo(1)]は一番左のシートを表します。「[SheetNo(1/2/3)]」のように番号を/で区切ると複数のシートを指定できます。

    セル書式

    • セルは「B1」「C4」のような書き方と、「1:2」「4:3」のような書き方ができます。「B1」と「1:2」は同じセルを表します。

      「B1」のようなアルファベットを使った書き方は、列、行の順に記述しますが、「1:2」のような数字のみの書き方は行、列の順に記述します。

      また、「A1-A3」(「1:1-3:1」)や、「B2-D4」(「2:2-4:4」)のようにハイフンで区切ると範囲を表すこともできます。

      セルの範囲は、通常「A1-C3」のように左上と右下のセルを記述しますが、「A3-C1」や「C3-A1」のように記述しても同じ意味となります。

      セルやセル範囲を「|」で区切って複数渡すこともできます。「A1|A3」(「1:1|3:1」)や「B2-D4|A5-B8」(「2:2-4:4|5:1-8:2」)のように表記します。

      「A1-C3|B2-D4」のように複数の範囲が重複するセルを表している場合は、最初に「A1-C3」の処理をして、次に「B2-D4」の処理を行いますので、重複したセルは一番最後に処理した内容になります。

      セルやセル範囲を「&」で区切って複数渡すこともできます。「A&C-F」(「:1&:3-:6」)や「B2-C10&E2-F10」(「2:2-10:3&2:5-10:6」)のように表記します。

      「|」は複数のセル範囲を別々に行追加していきますが、「&」は複数のセル範囲を混在させた結果となります。

      A B C
      1 会社名 所在地 電話番号
      2 ○○建設 東京 03-5555-0000
      3 △△運送 大阪 06-5555-0000
      4 ■■商事 名古屋 052-555-0000

      「A2-A3|C2-C3」と記述すると以下の結果となります。

      ○○建設
      △△運送
      03-5555-0000
      06-5555-0000

      「A2-A3&C2-C3」と記述すると以下の結果となります。

      ○○建設,03-5555-0000
      △△運送,06-5555-0000

      「A2-A3&C3-C4&B2-B4」と記述すると以下の結果となります。左上を基準に横方向と縦方向にデータを追加していくイメージです。

      ○○建設,06-5555-0000,東京
      △△運送,052-555-0000,大阪
      ,,名古屋

      セル拡張書式

      列や行などの終端が決まっていない範囲を指定する場合は、以下の書式を使用します。

      説明 書式 備考
      シート全体 [ALL]
      列指定 A
      列指定(数字) :1 A列は1、B列は2のように1からの番号で指定。
      列の範囲 A-C A列~C列。
      行の範囲 2-5 2行目から5行目。
      列指定(開始行指定あり) B5-B B5から下方向。
      列指定(開始行指定あり)(数字指定) 5:2-:2 B5から下方向。
      行指定(開始列指定あり) B5-5 B5から右方向。
      行指定(開始行列定あり)(数字指定) 5:2-5 B5から右方向。
      列指定(開始行指定あり・複数列) B5-C B列とC列の5行目から下方向。5:2-:3も可。
      行指定(開始列指定あり・複数行) B5-6 5行目と6行目のB列から右方向。5:2-6も可。

String.Format書式

書式 出力例
(入力値:1234.56
または 789)
説明
C ¥1,234.56 通貨形式(Currency)
D5 00789 整数を5桁で0埋め
E 1.234560E+003 指数表記(Exponential)
F2 1234.56 小数点以下2桁の固定小数点形式
N 1,234.56 数値(3桁ごとのカンマ区切り)
P 12,356.00% パーセンテージ(Percent)
0.# 1234.6 小数第1位まで。小数第2位で四捨五入。0で終わる場合は省略(例: 1234.0 → 1234)
#,##0 1,235 整数部を3桁区切りで表示、小数なし(四捨五入)
0000 0789 4桁でゼロ埋め表示
書式 出力例(入力値: 2025年4月8日 14:35) 説明
yyyy/MM/dd 2025/04/08 年月日(スラッシュ区切り)
MM/dd/yyyy 04/08/2025 月/日/年の米国形式
HH:mm:ss 14:35:00 24時間制の時刻
dddd, MMMM d 火曜日, 4月 8 曜日と月日
yyyy年M月d日 2025年4月8日 和風スタイルの年月日
NAME ExcelデータCSV出力
FORMAT {%EXCEL_SAVE_CSV(Excelファイル名,シート名,出力ファイル名[,フォーマットリストユーザーデータ名][,出力セル範囲][,出力ファイル既存時の挙動(SeqNo|Overwrite|Append)][,出力エンコーディング(UTF-8|SJIS)])}

引き数で指定されたExcelファイルの指定シートをCSVファイルに変換出力します。

シート名にはシート名を直接記述します。複数のシート名を指定する場合は、「Sheet1/Sheet2」のように/で区切って指定します。

また、シート名には シート書式 も使用できます。

シート名に複数のシートを指定した場合は、シート毎にCSVファイルが出力されます。また、出力されるファイル名の末尾に「シート番号(4桁)-シート名」が付与されます。

出力ファイル名に「集計表.csv」を指定、
対象シートを「東京」「大阪」「名古屋」のうち、「東京」「名古屋」を指定した場合
集計表_0001-東京.csv
集計表_0003-名古屋.csv

Excelファイルや上書き時の出力のファイルが使用中など、ファイルをオープンできなかった場合はエラーが発生します。

フォーマットユーザーデータ名には、CSV出力時に特定のセルを指定したフォーマットで出力するための情報をセットしたユーザーデータの名前を指定します。

フォーマットユーザーデータは、「セル」と「フォーマット」をキーにしたデータを複数渡すことができます。ここで指定する「セル」には セル拡張書式 も使用できます。

ここで指定するフォーマットの書式は .NET FrameworkのString.Formatの書式(:以降の書式) の書式を使用します。Excelの書式ではありませんので注意してください。

#A2から下方向のセル全てをyyyy/MM/ddでフォーマットする
{%SET_U(Format,1,セル,A2-A)}
{%SET_U(Format,1,フォーマット,yyyy/MM/dd)}

#F2から下方向のセル全てを5桁0埋めでフォーマットする
{%SET_U(Format,2,セル,F2-F)}
{%SET_U(Format,2,フォーマット,00000)}

#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,Sheet1,D:\Home\ExcelDemo\Demo01\Sample.csv,Format)}

出力セル範囲には、出力するセルの範囲を指定します。省略するとシート全体が対象になります。([ALL]の指定と同等)

セル範囲は「|」で区切って複数渡すこともできます。セルの列数が違う範囲を複数渡すと、出力されるCSVの列数が違うものが混在することになります。

複数のシートを指定した場合は、すべてのシートに指定したセル範囲が適用されます。

出力ファイル既存時の挙動はSeqNo(連番付与)、Overwrite(上書き)、Append(追加書き込み)の何れかを指定できます。

連番付与はファイル名の末尾に「元ファイル名_0001.csv」のように連番が付与されます。省略すると連番が付与されて出力されます。

追加書き込みを指定した場合は、出力エンコーディングで指定したエンコーディングで追加書き込みを行います。

既存のファイルと異なるエンコーディングで追記を行うと文字化けが発生するので注意してください。

出力エンコーディングは省略するとUTF-8で出力されます。

例1
D:\Home\ExcelDemo\Demo01\Sample.xlsxの現在のシートをCSVファイルに出力する。(出力ファイルが存在する場合はファイル名に連番を付与する)
#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,[ActiveSheet],D:\Home\ExcelDemo\Demo01\Sample.csv)}
例2
D:\Home\ExcelDemo\Demo01\Sample.xlsxの1番目のシートをCSVファイルに出力する。(出力ファイルが存在する場合は上書きする)
#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,[SheetNo(1)],D:\Home\ExcelDemo\Demo01\Sample.csv,,,Overwrite)}
例3

D:\Home\ExcelDemo\Demo01\Sample.xlsxのSheet1をCSVファイルに出力する。(出力ファイルが存在する場合は上書きする)

「C4-P12」のセル範囲のフォーマットを数字のみにする。(カンマ編集などを行わない)

{%SET_U(Format,1,セル,C4-P12)}
{%SET_U(Format,1,フォーマット,0)}

#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,Sheet1,D:\Home\ExcelDemo\Demo01\Sample.csv,Format,,Overwrite)}
例4

D:\Home\ExcelDemo\Demo01\Sample.xlsxのSheet1をCSVファイルに出力する。(出力ファイルが存在する場合は上書きする)

「C4-P12」のセル範囲のフォーマットを数字のみにする。(カンマ編集などを行わない)

「C4-P12」のセル範囲のみを出力する。

{%SET_U(Format,1,セル,C4-P12)}
{%SET_U(Format,1,フォーマット,0)}

#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,Sheet1,D:\Home\ExcelDemo\Demo01\Sample.csv,Format,C4-P12,Overwrite)}
例5

D:\Home\ExcelDemo\Demo01\Sample.xlsxのSheet1をCSVファイルに出力する。(出力ファイルが存在する場合は上書きする)

「C4-P12」と「C15-P25」のセル範囲のフォーマットを数字のみにする。(カンマ編集などを行わない)

「C4-P12」と「C15-P25」のセル範囲のみを出力する。

{%SET_U(Format,1,セル,C4-P12|C15-P25)}
{%SET_U(Format,1,フォーマット,0)}

#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,Sheet1,D:\Home\ExcelDemo\Demo01\Sample.csv,Format,C4-P12|C15-P25,Overwrite)}
例6

D:\Home\ExcelDemo\Demo01\Sample.xlsxのSheet1をCSVファイルに出力する。(出力ファイルが存在する場合は上書きする)

「A」と「C-F」のセル範囲のみを出力する。

#CSVファイル出力
{%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,Sheet1,D:\Home\ExcelDemo\Demo01\Sample.csv,,A&C-F,Overwrite)}
NAME Excelブックオープン
FORMAT {%EXCEL_OPEN_BOOK(Excelファイル名)}

引き数で指定されたExcelファイルをオープンします。ファイルが存在しない場合はエラーとなります。

オープンに成功した場合は識別キー、失敗した場合はエラーになります。

オープンに成功した場合は識別キーがメモリに記憶されます。以後、識別キーが省略された場合はメモリに記憶している識別キーを参照します。

メモリに記憶している識別キーは設定の実行が終わるまで保持しています。また、別のファイルをオープンすると上書きされます。

ファイルが使用中など、ファイルをオープンできなかった場合はエラーが発生します。

例1
D:\Home\ExcelDemo\Demo01\Sample.xlsxをオープンする。
#Excelファイルをオープン
{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)}

#クローズ
{%EXCEL_CLOSE_BOOK()}
例2
識別キーを使用する場合(同時に複数のファイルを扱う場合はこちらを使ってください。)
#Excelファイルをオープン
{%SET_U(Excel,Handle1,{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample1.xlsx)})}
{%SET_U(Excel,Handle2,{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample2.xlsx)})}

#Sample1.xlsxから作成日(J1)、担当者(J2)を取得
{%EXCEL_GET_CELL_VALUES(#Key,{%GET_U(Excel,Handle1)},Sheet1,J1|J2,,ExcelData)}

#Sample2.xlsxから作成日(J1)、担当者(J2)を取得
{%EXCEL_GET_CELL_VALUES(#Key,{%GET_U(Excel,Handle2)},Sheet1,J1|J2,,ExcelData)}

#クローズ
{%EXCEL_CLOSE_BOOK({%GET_U(Excel,Handle1)})}
{%EXCEL_CLOSE_BOOK({%GET_U(Excel,Handle2)})}
NAME Excelブッククローズ
FORMAT {%EXCEL_CLOSE_BOOK([識別キー])}

引き数に渡されたハンドルのExcelファイルをクローズします。

引き数が省略された場合はメモリに記憶されている識別キーを参照して対象ファイルをクローズします。

オープンされているExcelファイルがない場合に呼び出してもエラーにならず、何も行いません。

ファイルをクローズする時にシートがひとつもない場合は「Sheet1」という名前でシートを自動作成してクローズします。

NAME シート名取得
FORMAT {%EXCEL_GET_ALL_SHEET_NAMES(取得値格納用ユーザーデータ名)}
FORMAT {%EXCEL_GET_ALL_SHEET_NAMES(#Key,識別キー,取得値格納用ユーザーデータ名)}

オープン中のExcelファイルのすべてのシート名を取得します。

オープンされているExcelファイルがない場合に呼び出すとエラーが発生します。

例1
D:\Home\ExcelDemo\Demo01\Sample.xlsxのすべてのシートを取得してログに出力する。
#Excelファイルをオープン
{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)}

#シート名取得
{%EXCEL_GET_ALL_SHEET_NAMES(シート一覧)}

{%LOOP L1 {%GET_USER_DATA_COUNT(シート一覧)}(
  {%WRITE_LOG({%GET_U(シート一覧,[L_IDX(L1)])})}  
)}

#クローズ
{%EXCEL_CLOSE_BOOK()}
NAME アクティブシート変更
FORMAT {%EXCEL_SET_ACTIVE_SHEET(シート名)}
FORMAT {%EXCEL_SET_ACTIVE_SHEET(#Key,識別キー,シート名)}

オープン中のExcelファイルのアクティブシートを変更します。

オープンされているExcelファイルがない場合に呼び出すとエラーが発生します。

例1
D:\Home\ExcelDemo\Demo01\Sample.xlsxのアクティブシートを「Sheet2」に変更する。
#Excelファイルをオープン
{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)}

#アクティブシート変更
{%EXCEL_SET_ACTIVE_SHEET(Sheet2)}

#クローズ
{%EXCEL_CLOSE_BOOK()}
NAME セル値取得
FORMAT {%EXCEL_GET_CELL_VALUES(シート名,セル,そのまま|左詰め,取得値格納用ユーザーデータ名[,フォーマットリストユーザーデータ名])}
FORMAT {%EXCEL_GET_CELL_VALUES(#Key,識別キー,シート名,セル,そのまま|左詰め,取得値格納用ユーザーデータ名[,フォーマットリストユーザーデータ名])}

セルの値を取得します。

引き数で指定されたセルの指定によって、セル値が格納されるユーザーデータの構造が変わります。

引き数の「そのまま|左詰め」は、「そのまま」または、空文字列を指定すると、シートのセル範囲のセル値をそのまま取得します。「左詰め」を指定すると、シートから取得したセル値が空文字列だった時に左方向に詰めるような動きとなります。

取得値格納用ユーザーデータ名「ExcelData」(以後同じ)、セルに「A1」を指定した場合、以下のマクロで取得できます。

{%GET_U(ExcelData,1,1)} -> A1

セルに「A1-B2」を指定した場合、以下のマクロで取得できます。(ExcelData,縦方向セル番号,横方向セル番号)

セルを表す「B1」等は、列、行の順になっていますが、ユーザーデータでは、行、列の順に記述します。逆になっているので注意してください。

{%GET_U(ExcelData,1,1)} -> A1
{%GET_U(ExcelData,1,2)} -> B1
{%GET_U(ExcelData,2,1)} -> A2
{%GET_U(ExcelData,2,2)} -> B2

セルに「A1|B3」を指定した場合、以下のマクロで取得できます。(ExcelData,縦方向セル番号,横方向セル番号)

{%GET_U(ExcelData,1,1)} -> A1
{%GET_U(ExcelData,2,1)} -> B3

セルに「A1-B2|B3-C4」を指定した場合、以下のマクロで取得できます。(ExcelData,縦方向セル番号,横方向セル番号)

{%GET_U(ExcelData,1,1)} -> A1
{%GET_U(ExcelData,1,2)} -> B1
{%GET_U(ExcelData,2,1)} -> A2
{%GET_U(ExcelData,2,2)} -> B2
{%GET_U(ExcelData,3,1)} -> B3
{%GET_U(ExcelData,3,2)} -> C3
{%GET_U(ExcelData,4,1)} -> B4
{%GET_U(ExcelData,4,2)} -> C4

セルに「A1&B3」を指定した場合、以下のマクロで取得できます。(ExcelData,縦方向セル番号,横方向セル番号)

{%GET_U(ExcelData,1,1)} -> A1
{%GET_U(ExcelData,1,2)} -> B3

セルに「A1-B2&E1-F2」を指定した場合、以下のマクロで取得できます。(ExcelData,縦方向セル番号,横方向セル番号)

{%GET_U(ExcelData,1,1)} -> A1
{%GET_U(ExcelData,1,2)} -> B1
{%GET_U(ExcelData,1,3)} -> E1
{%GET_U(ExcelData,1,4)} -> F1
{%GET_U(ExcelData,2,1)} -> A2
{%GET_U(ExcelData,2,2)} -> B2
{%GET_U(ExcelData,2,3)} -> E2
{%GET_U(ExcelData,2,4)} -> F2

シートに[AllSheets]や複数シートを指定した場合は、シート名の階層が加わります。シートに「Sheet1/Sheet2」セルに「A1-B2」を指定した場合、以下のマクロで取得できます。(ExcelData,シート名,縦方向セル番号,横方向セル番号)

{%GET_U(ExcelData,Sheet1,1,1)} -> A1
{%GET_U(ExcelData,Sheet1,1,2)} -> B1
{%GET_U(ExcelData,Sheet1,2,1)} -> A2
{%GET_U(ExcelData,Sheet1,2,2)} -> B2
{%GET_U(ExcelData,Sheet2,1,1)} -> A1
{%GET_U(ExcelData,Sheet2,1,2)} -> B1
{%GET_U(ExcelData,Sheet2,2,1)} -> A2
{%GET_U(ExcelData,Sheet2,2,2)} -> B2

取得値格納用ユーザーデータはクリア処理を行ってから格納されます。

フォーマットユーザーデータ名には、特定のセルを指定したフォーマットで取得するための情報をセットしたユーザーデータの名前を指定します。

フォーマットユーザーデータは、「セル」と「フォーマット」をキーにしたデータを複数渡すことができます。ここで指定する「セル」には セル拡張書式 も使用できます。

ここで指定するフォーマットの書式は .NET FrameworkのString.Formatの書式(:以降の書式) の書式を使用します。Excelの書式ではありませんので注意してください。

Excelファイルをオープン
{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)}

#A2から下方向のセル全てをyyyy/MM/ddでフォーマットする
{%SET_U(Format,1,セル,A2-A)}
{%SET_U(Format,1,フォーマット,yyyy/MM/dd)}

#F2から下方向のセル全てを5桁0埋めでフォーマットする
{%SET_U(Format,2,セル,F2-F)}
{%SET_U(Format,2,フォーマット,00000)}

#A1からG20を取得
{%EXCEL_GET_CELL_VALUES(Sheet1,A1-G20,,ExcelData,,Format)}

#CSVファイルに出力
{%WRITE_CSV_FILE(D:\Home\ExcelDemo\Demo01\Sample.csv,ExcelData,SJIS)}

#クローズ
{%EXCEL_CLOSE_BOOK()}

指定されたシートが見つからない場合はエラーとなります。

例1
Sample.xlsxのSheet1からJ1セル(作成日)、J2セル(担当者)を取得してユーザーデータにセットする。
#Excelファイルをオープン
{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)}

#作成日(J1)、担当者(J2)を取得
{%EXCEL_GET_CELL_VALUES(Sheet1,J1|J2,,ExcelData)}

{%SET_U(属性,作成日,{%GET_U(ExcelData,1,1)})}
{%SET_U(属性,担当者,{%GET_U(ExcelData,2,1)})}

#クローズ
{%EXCEL_CLOSE_BOOK()}
例2
Sample.xlsxのSheet1からA1からG20までの範囲を取得してCSVファイルに出力する。
#Excelファイルをオープン
{%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)}

#A1からG20を取得
{%EXCEL_GET_CELL_VALUES(Sheet1,A1-G20,,ExcelData)}

#CSVファイルに出力
{%WRITE_CSV_FILE(D:\Home\ExcelDemo\Demo01\Sample.csv,ExcelData,SJIS)}

#クローズ
{%EXCEL_CLOSE_BOOK()}