テキスト行取得

FORMAT1 {%GET_LINE(テキスト読み込み処理名)}

テキスト読み込みで読み込んだテキストを1行取得します。処理名に対象となるテキスト読み込みの処理名を指定してください。

例1 「伊藤由美子,女性,24,東京都品川区」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「伊藤由美子,女性,24,東京都品川区」が表示されます。

{%MSGBOX({%GET_LINE(テキスト読み込み1)})}
テキスト取得

FORMAT1 {%GET_FIELD_VALUE(テキスト読み込み処理名,列番号)}

テキスト読み込みで読み込んだテキスト、又は、SQL実行のSLELCT文の結果レコードを取得します。処理名に対象となるテキスト読み込み、又は、SQL実行の処理名を指定してください。

列番号は、対象の項目番号を指定します。

例1 「伊藤由美子,女性,24,東京都品川区」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「女性」が表示されます。

{%MSGBOX({%GET_FIELD_VALUE(テキスト読み込み1,2)})}
テキスト項目設定

FORMAT1 {%SET_FIELD_VALUE(テキスト読み込み処理名,列番号,値)}

テキスト読み込みで読み込んだテキストの配列に値をセットします。処理名に対象となるテキスト読み込みを指定してください。

列番号は、対象の項目番号を指定します。

本マクロは、テキスト読み込みで読み込んだデータを部分的に変更したい場合に使用します。

例1 「伊藤由美子,女性,24,東京都品川区」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「28」が表示されます。

{%SET_FIELD_VALUE(テキスト読み込み1,3,28)}

{%MSGBOX({%GET_FIELD_VALUE(テキスト読み込み1,3)})}
CSVテキスト取得

FORMAT1 {%GET_FIELD_VALUES_IN_CSV(テキスト読み込み処理名,列番号,列番号,…)}

テキスト読み込みで読み込んだテキスト、又は、SQL実行のSLELCT文の結果レコードをCSV(カンマ区切り)で取得します。処理名に対象となるテキスト読み込み、又は、SQL実行の処理名を指定してください。

列番号は、対象の項目番号を指定します。列番号は複数記述することが可能です。例えば1番目と2番目の項目を取得したい場合は、1,2と記述します。2番目~5番目の項目を取得したい場合は、2-5と記述します。1,3-5のようにカンマとハイフンを組み合わせて指定することも可能です。1-や-3のように、開始や終了の列番号を省略することも可能です。

取得されるテキストはCSV形式になります。複数の項目がカンマで区切られ、項目中にカンマがある場合は、項目が”で囲われます。単一の列を取得する場合でも、項目中にカンマがある場合は、項目が”で囲われます。

項目中に"がある場合は、""と2つ続けて記述され、項目が”で囲われます。

例1 「伊藤由美子,女性,24,東京都品川区」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「女性,東京都品川区」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_CSV(テキスト読み込み1,2,4)})}

例2 「伊藤由美子,女性,24,東京都品川区」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「伊藤由美子,女性,24」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_CSV(テキスト読み込み1,1-3)})}

例3 「伊藤由美子,女性,24,"東京都,品川区"」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「伊藤由美子,"東京都,品川区"」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_CSV(テキスト読み込み1,1,4)})}

例4 「伊藤由美子,女性,24,"東京都,品川区","タイトル""夏の思い出"""」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「伊藤由美子,"東京都,品川区","タイトル""夏の思い出"""」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_CSV(テキスト読み込み1,1,4,5)})}
TSVテキスト取得

FORMAT1 {%GET_FIELD_VALUES_IN_TSV(テキスト読み込み処理名,列番号,列番号,…)}

テキスト読み込みで読み込んだテキスト、又は、SQL実行のSLELCT文の結果レコードをTSV(タブ区切り)で取得します。処理名に対象となるテキスト読み込み、又は、SQL実行の処理名を指定してください。

返却文字列がタブ区切りとなる以外は、CSVテキスト取得マクロと同じ仕様となります。

SVテキスト取得

FORMAT1 {%GET_FIELD_VALUES_IN_SV(テキスト読み込み処理名,区切り文字,エスケープ有無(有|無),囲い文字,全項目囲い文字付与有無(有|無),項目番号,項目番号,…)}

テキスト読み込みで読み込んだテキスト、又は、SQL実行のSLELCT文の結果レコードを引数で指定された区切り文字区切りで取得します。処理名に対象となるテキスト読み込み、又は、SQL実行の処理名を指定してください。

基本的な動作はCSVテキスト取得マクロと同じですが、区切り文字、エスケープ処理の有無、囲い文字、全ての項目に囲い文字を付与するかどうかを指定可能です。

エスケープ処理は、項目中に区切り文字が含まれている場合に、囲い文字で項目を囲います。また、項目中に囲い文字が含まれている場合に囲い文字を2つ続けて記述し、囲い文字で項目を囲います。

例えば1番目のデータが「123」、2番目のデータが「A,BC」の場合、「123,"A,BC"」と取得されます。

1番目のデータが「123」、2番目のデータが「A"BC」の場合、「123,"A""BC"」と取得されます。

全項目囲い文字付与有無に「有」が指定された場合は、全項目が囲い文字で囲われます。エスケープ処理ではないので、同時にエスケープ処理を行いたい場合は、エスケープ有無に「有」を合わせて指定してください。

例1 「伊藤由美子,女性,24,"東京都,品川区","タイトル""夏の思い出"""」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「"伊藤由美子"|"女性"|"24"|"東京都,品川区"|"タイトル""夏の思い出"""」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_SV(テキスト読み込み1,||,有,",有,1-)})}

例2 「伊藤由美子,女性,24,"東京都,品川区","タイトル""夏の思い出"""」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「伊藤由美子,女性,24,東京都,品川区,タイトル"夏の思い出"」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_SV(テキスト読み込み1,|,,無,',無,1-5)})}

例3 「伊藤由美子,女性,24,"東京都,品川区","タイトル""夏の思い出"""」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「伊藤由美子,女性,24,'東京都,品川区',タイトル"夏の思い出"」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_SV(テキスト読み込み1,|,,有,',無,1-5)})}
テキスト取得(列名で指定)

FORMAT1 {%GET_FIELD_VALUE_BY_NAME(テキスト読み込み処理名,列名)}

GET_FIELD_VALUE と同じですが、項目を列名で指定できます。但し、ヘッダ情報があるテキストを読み込んだ場合のみ使用できます。SQL実行のSELECT文の結果レコードに対しては使用できません。

例1 ヘッダに「氏名,性別,年齢,住所」が存在する場合で、「伊藤由美子,女性,24,東京都品川区」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「女性」が表示されます。

{%MSGBOX({%GET_FIELD_VALUE_BY_NAME(テキスト読み込み1,性別)})}
CSVテキスト取得(列名で指定)

FORMAT1 {%GET_FIELD_VALUES_IN_CSV_BY_NAME(テキスト読み込み処理名,列名,列名,…)}

GET_FIELD_VALUES_IN_CSV と同じですが、項目を列名で指定できます。但し、ヘッダ情報があるテキストを読み込んだ場合のみ使用できます。SQL実行のSELECT文の結果レコードに対しては使用できません。

例1 ヘッダに「氏名,性別,年齢,住所」が存在する場合で、「伊藤由美子,女性,24,"東京都,品川区"」のデータをテキスト読み込み1で読み込んだ場合、以下のマクロでは「女性,"東京都,品川区"」が表示されます。

{%MSGBOX({%GET_FIELD_VALUES_IN_CSV_BY_NAME(テキスト読み込み1,性別,住所)})}
TSVテキスト取得(列名で指定)

FORMAT1 {%GET_FIELD_VALUES_IN_TSV_BY_NAME(テキスト読み込み処理名,列名,列名,…)}

GET_FIELD_VALUES_IN_TSV と同じですが、項目を列名で指定できます。但し、ヘッダ情報があるテキストを読み込んだ場合のみ使用できます。SQL実行のSELECT文の結果レコードに対しては使用できません。

SVテキスト取得(列名で指定)

FORMAT1 {%GET_FIELD_VALUES_IN_SV_BY_NAME(テキスト読み込み処理名,区切り文字,列名,列名,…)}

GET_FIELD_VALUES_IN_SV と同じですが、項目を列名で指定できます。但し、ヘッダ情報があるテキストを読み込んだ場合のみ使用できます。SQL実行のSELECT文の結果レコードに対しては使用できません。

テキストファイル読み込み

FORMAT1 {%READ_FILE(ファイル名,ユーザーデータ名,文字コード(SJIS|UTF-8|UTF-16|UTF-16BE|EUC|JIS|自動),行モード(LINE|ALL))}

テキストファイルからテキストを読み込みます。本マクロはテキスト読み込み処理と関係なく単独で使用できます。文字コードは「SJIS」、「UTF-8」、「UTF-16」、「UTF-16BE」、「EUC」、「JIS」、「自動」の何れかを指定します。

ユーザーデータ名で指定されたユーザーデータを作成して、読み込んだテキストを格納します。行モードが「LINE」の場合、行単位に読み込み行番号をキーとしてユーザーデータに格納します。行モードが「ALL」の場合、全行を読み込み、キー「1」としてユーザーデータに格納します。

改行コードについて

行モードが「LINE」の場合、読み込み後のテキストの改行コードはCRLFになります。

行モードが「ALL」の場合、読み込み後のテキストの改行コードはテキストファイルの改行コードと同じになります。

指定されたファイルが見つからない場合はエラーとなります。

本マクロは1MB以下くらいの小さなテキストファイルを対象にすることを想定しています。テキストデータを全てメモリに読み込みますので、大きなファイルを対象にするとアプリケーションがフリーズしたり、エラーがでる可能性があります。大きなファイルを扱う場合は、テキスト読み込み処理を使って設定を作成してください。

例1 テキストファイル「D:\data.txt」の内容を全て読み込んで、内容をクリップボードにセットする。

{%READ_FILE(D:\data.txt,text,SJIS,ALL)}

{%SET_CLIPBOARD_TEXT({%GET_USER_DATA(text,1)})}

例2 テキストファイル「D:\data.txt」の内容を行単位で全て読み込んで、2行目の内容をクリップボードにセットする。

{%READ_FILE(D:\data.txt,text,SJIS,LINE)}

{%SET_CLIPBOARD_TEXT({%GET_USER_DATA(text,2)})}
テキストファイル書き込み

FORMAT1 {%WRITE_FILE(ファイル名,ユーザーデータ名,エンコーディング(SJIS|UTF-8|UTF-8WB|UTF-16|UTF-16BE|EUC|JIS),[書き込みモード(New|Append)])}

ユーザーデータの1階層目の1要素を1行として、全要素をファイルに書き込みます。

ユーザーデータは1階層のみ対象としています。(2階層以降のデータは無視されます)

エンコーディングの「UTF-8」 は、BOM無しUTF-8を「UTF-8WB」 は、BOM有りUTF-8を表しています。

書き込みモードが「New」の場合は新規でファイルを作成します。同名のファイルがある場合は上書きします。

書き込みモードが「Append」の場合は追加書き込みします。ファイルがない場合は新規作成します。

書き込みモードが省略された場合はNewとなります。

例1 「D:\test.txt」にユーザーデータの内容をSJISで新規ファイルとして出力する。

{%ADD_USER_DATA(writeData,WRITE_FILEマクロについて)}
{%ADD_USER_DATA(writeData,ユーザーデータの内容をファイルに保存します。)}
{%WRITE_FILE(D:\test.txt,writeData,SJIS,New)}
CSVファイル読み込み

FORMAT1 {%READ_CSV_FILE(ファイル名,ユーザーデータ名,文字コード(SJIS|UTF-8|UTF-16|UTF-16BE|EUC|JIS|自動),ヘッダ行,データ開始行,行キー(項目番号|0),項目キータイプ(項目名|番号),[区切り文字])}

CSVファイルからテキストを読み込みます。本マクロはテキスト読み込み処理と関係なく単独で使用できます。文字コードは「SJIS」、「UTF-8」、「UTF-16」、「UTF-16BE」、「EUC」、「JIS」、「自動」の何れかを指定します。

ユーザーデータ名で指定されたユーザーデータを作成して、読み込んだテキストを格納します。行単位に読み込み、行番号を分類キーで作成し、項目毎にユーザーデータに格納します。

ヘッダ行にはヘッダの行番号を指定します。ヘッダ行がない場合は0を指定します。

データ開始行には、データ行の先頭の行番号を指定します。

行キーには、キーとなる項目番号(1~)を指定します。キーを複数指定する場合は、「1-2」のようにハイフンで区切ります。

キーを複数指定した場合は以下のように指定したキーのデータがユーザーデータの分類キーに対応して格納されます。

{%GET_U(ユーザーデータ名,キー1,キー2,項目名)}

行キーに項目番号を指定した場合、指定された項目のデータに重複がある場合、最後に読み込んだデータで上書きされます。また、項目が空文字だった場合は重複しない連番を自動付与したキーが作成されます。

行キーに0を指定すると行のキーは番号(1~)になります。

項目キータイプに項目名を指定した場合は、ヘッダ行に1以上の数字を指定する必要があります。ヘッダ行に指定された行の項目名をキーとして使用します。ヘッダ行が0の場合は項目名は番号となります。

項目キータイプに番号を指定した場合は項目番号がキーとなります。

区切り文字は省略可能です。指定した場合は指定した文字を区切り文字として処理します。タブを指定したい場合は「<Tab>」を指定します。

指定されたファイルが見つからない場合はエラーとなります。

本マクロは1MB以下くらいの小さなファイルを対象にすることを想定しています。テキストデータを全てメモリに読み込みますので、大きなファイルを対象にするとアプリケーションがフリーズしたり、エラーがでる可能性があります。大きなファイルを扱う場合は、テキスト読み込み処理を使って設定を作成してください。

例1 CSVファイル「D:\data.csv」の内容を読み込んでログに出力する。

{%READ_CSV_FILE(D:\data.csv,csv,SJIS,0,1,0,番号)}
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(csv)}(
  {%LOOP L2 {%GET_USER_DATA_KEY_COUNT(csv,[L_IDX(L1)])}(
    {%WRITE_LOG({%GET_U(csv,[L_IDX(L1)],[L_IDX(L2)])})}    
  )}
)}

例2 CSVファイル「D:\data.csv」の内容を読み込んでログに出力する。項目名指定。先頭行に「氏名,年齢,電話番号」が記載されたデータの場合。

{%READ_CSV_FILE(D:\data.csv,csv,SJIS,1,2,0,項目名)}
{%LOOP L1 {%GET_USER_DATA_KEY_COUNT(csv)}(
  {%WRITE_LOG({%GET_U(csv,[L_IDX(L1)],氏名)})}    
  {%WRITE_LOG({%GET_U(csv,[L_IDX(L1)],年齢)})}    
  {%WRITE_LOG({%GET_U(csv,[L_IDX(L1)],電話番号)})}    
)}

例3 CSVファイル「D:\data.csv」の内容を読み込んでログに出力する。学生番号を行のキーとする。項目名指定。先頭行に「学生番号,氏名,年齢,電話番号」が記載されたデータの場合。

{%READ_CSV_FILE(D:\data.csv,csv,SJIS,1,2,1,項目名)}

#学生番号が0003のデータを出力する
{%WRITE_LOG({%GET_U(csv,0003,氏名)})}    
{%WRITE_LOG({%GET_U(csv,0003,年齢)})}    
{%WRITE_LOG({%GET_U(csv,0003,電話番号)})}    

例4 入力のCSVファイルの内容を読み込んでログに出力する。ステータスを第1キー、入力コードを第2キーとする。以下のようなデータの場合。

印刷日時,ステータス,入力コード,ファイル名,メッセージ
2025/11/11 15:35:23,正常,OW-001-01,OW-001-01.xdw,印刷完了
2025/11/11 15:35:27,正常,OW-001-02,OW-001-02.xdw,印刷完了
2025/11/11 15:37:13,正常,OW-001-03,OW-001-03.xdw,印刷完了
2025/11/11 15:56:00,エラー,OW-001-03,OW-001-03.xdw,RAISE_ERRORによるエラー プリンター情報の取得に失敗しました。 処理名[結果判定] 発生場所[MacroMethod_RaiseError.Method]
#CSVファイル読み込み
{%READ_CSV_FILE({%GET(FullPathFileName)},csv,UTF-8,1,2,2-3,項目名)}

#読み込んだデータの内容をすべてテキストファイルに保存する
{%SAVE_USER_DATA({%GET(FolderPath)}\data.txt,csv,UTF-8)}

#ステータス:正常、入力コード:OW-001-02の印刷日時をログ出力
{%WRITE_LOG(印刷日時:{%GET_U(csv,正常,OW-001-02,印刷日時)})}    

↓結果

印刷日時:2025/11/11 15:35:27 マクロ名[WRITE_LOG]

読み込み後のユーザーデータをSAVE_USER_DATAマクロで保存すると以下のようになります。

正常
	OW-001-01
		印刷日時	2025/11/11 15:35:23
		ステータス	正常
		入力コード	OW-001-01
		ファイル名	OW-001-01.xdw
		メッセージ	印刷完了
	OW-001-02
		印刷日時	2025/11/11 15:35:27
		ステータス	正常
		入力コード	OW-001-02
		ファイル名	OW-001-02.xdw
		メッセージ	印刷完了
	OW-001-03
		印刷日時	2025/11/11 15:37:13
		ステータス	正常
		入力コード	OW-001-03
		ファイル名	OW-001-03.xdw
		メッセージ	印刷完了
エラー
	OW-001-03
		印刷日時	2025/11/11 15:56:00
		ステータス	エラー
		入力コード	OW-001-03
		ファイル名	OW-001-03.xdw
		メッセージ	RAISE_ERRORによるエラー プリンター情報の取得に失敗しました。 処理名[結果判定] 発生場所[MacroMethod_RaiseError.Method]
CSVファイル書き込み

FORMAT1 {%WRITE_CSV_FILE(ファイル名,ユーザーデータ名,文字コード(SJIS|UTF-8|UTF-8WB|UTF-16|UTF-16BE|EUC|JIS),[書き込みモード(New|Append)],[区切り文字],[囲い文字(必要時|常時)])}

ユーザーデータの1階層目の1要素を1行、2階層目の1要素を項目として、全ての行、全ての項目をファイルに書き込みます。

ユーザーデータのキーは参照しません。キーに何が格納されていても動作に影響はありません。

エンコーディングの「UTF-8」 は、BOM無しUTF-8を「UTF-8WB」 は、BOM有りUTF-8を表しています。

エンコーディングの「UTF-16」はBOM有りUTF-16のリトルエンディアンを表しています。「UTF-16BE」はBOM有りUTF-16のビッグエンディアンを表しています。

書き込みモードが「New」の場合は新規でファイルを作成します。同名のファイルがある場合は上書きします。

書き込みモードが「Append」の場合は追加書き込みします。ファイルがない場合は新規作成します。

書き込みモードが省略された場合はNewとなります。

囲い文字に「常時」を指定するとCSVデータの項目を常に""で囲います。省略するか「必要時」を指定するとCSVデータの項目にカンマや改行、"が含まれる場合のみ""で囲います。

例1 ユーザーデータの内容をCSVファイル「D:\data.csv」に出力する。

{%ADD_USER_DATA(writeData,1,社員番号)}
{%ADD_USER_DATA(writeData,1,氏名)}
{%ADD_USER_DATA(writeData,2,0001)}
{%ADD_USER_DATA(writeData,2,織田信長)}
{%ADD_USER_DATA(writeData,3,0002)}
{%ADD_USER_DATA(writeData,3,武田信玄)}
{%WRITE_CSV_FILE(D:\data.csv,writeData,SJIS)}
結果
社員番号,氏名
0001,織田信長
0002,武田信玄

例2 ユーザーデータの内容をCSVファイル「D:\data.csv」に出力する。

{%SET_U(writeData,1,1,社員番号)}
{%SET_U(writeData,1,2,氏名)}
{%WRITE_CSV_FILE(D:\data.csv,writeData,SJIS,New)}
{%SET_U(writeData,1,1,0001)}
{%SET_U(writeData,1,2,織田信長)}
{%WRITE_CSV_FILE(D:\data.csv,writeData,SJIS,Append)}
{%SET_U(writeData,1,1,0002)}
{%SET_U(writeData,1,2,武田信玄)}
{%WRITE_CSV_FILE(D:\data.csv,writeData,SJIS,Append)}
結果
社員番号,氏名
0001,織田信長
0002,武田信玄