処理中ファイル書式 | 状態取得書式 | ユーザーデータ書式 | グローバルデータ書式 | 日付書式 | 文字列書式 | 数学書式 | 制御書式 | ファイルシステム書式 | テキストファイル書式 | データベース書式 | プロセス書式 | Web書式 | DocuWorks書式 | DocuWorks書式 (アノテーション関連) | 画像処理書式 | 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も可。 |
書式 | 出力例 (入力値: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日 | 和風スタイルの年月日 |
引き数で指定された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で出力されます。
#CSVファイル出力 {%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,[ActiveSheet],D:\Home\ExcelDemo\Demo01\Sample.csv)}
#CSVファイル出力 {%EXCEL_SAVE_CSV(D:\Home\ExcelDemo\Demo01\Sample.xlsx,[SheetNo(1)],D:\Home\ExcelDemo\Demo01\Sample.csv,,,Overwrite)}
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)}
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)}
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)}
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)}
引き数で指定されたExcelファイルをオープンします。ファイルが存在しない場合はエラーとなります。
オープンに成功した場合は識別キー、失敗した場合はエラーになります。
オープンに成功した場合は識別キーがメモリに記憶されます。以後、識別キーが省略された場合はメモリに記憶している識別キーを参照します。
メモリに記憶している識別キーは設定の実行が終わるまで保持しています。また、別のファイルをオープンすると上書きされます。
ファイルが使用中など、ファイルをオープンできなかった場合はエラーが発生します。
#Excelファイルをオープン {%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)} #クローズ {%EXCEL_CLOSE_BOOK()}
#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)})}
引き数に渡されたハンドルのExcelファイルをクローズします。
引き数が省略された場合はメモリに記憶されている識別キーを参照して対象ファイルをクローズします。
オープンされているExcelファイルがない場合に呼び出してもエラーにならず、何も行いません。
ファイルをクローズする時にシートがひとつもない場合は「Sheet1」という名前でシートを自動作成してクローズします。
オープン中のExcelファイルのすべてのシート名を取得します。
オープンされているExcelファイルがない場合に呼び出すとエラーが発生します。
#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()}
オープン中のExcelファイルのアクティブシートを変更します。
オープンされているExcelファイルがない場合に呼び出すとエラーが発生します。
#Excelファイルをオープン {%EXCEL_OPEN_BOOK(D:\Home\ExcelDemo\Demo01\Sample.xlsx)} #アクティブシート変更 {%EXCEL_SET_ACTIVE_SHEET(Sheet2)} #クローズ {%EXCEL_CLOSE_BOOK()}
セルの値を取得します。
引き数で指定されたセルの指定によって、セル値が格納されるユーザーデータの構造が変わります。
引き数の「そのまま|左詰め」は、「そのまま」または、空文字列を指定すると、シートのセル範囲のセル値をそのまま取得します。「左詰め」を指定すると、シートから取得したセル値が空文字列だった時に左方向に詰めるような動きとなります。
取得値格納用ユーザーデータ名「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()}
指定されたシートが見つからない場合はエラーとなります。
#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()}
#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()}