シート名が 31 文字を超えるデータ シートを Excel にエクスポートする jmp スクリプトこんにちは、
いくつかの JMP データ テーブルを Excel にエクスポートしようとしています (シートごとに個別のタブがある 1 つの Excel ファイル)。ただし、一部のデータ シート名は 31 文字を超えており、Excel ではタブ名としてサポートされていません。JMP の [エクスポート] オプションを使用すると、31 文字を超える名前は切り捨てられても問題なく機能します。ただし、JMP スクリプトで [Excel ワークブックの作成 ()] を使用すると、ソフトウェアがクラッシュします。
Excel で許可されている 31 文字を超えるシート名を切り捨てながら Excel にエクスポートするために使用するスクリプトについて、どなたか教えていただけませんか?
ありがとう
大量カスタマイズウィンドウズRe: シート名が 31 文字を超えるデータシートを Excel にエクスポートする jmp スクリプトTransformEach は、次のような for ループに置き換えることができます
// dt_names = Transform Each({dt_ref}, dt_list, Substr(dt_ref << get name, 1, 31));
// for every dt_ref in dt_list, make a new list using substr...
dt_names = {};
for( i = 1, i <=nitems(dt_list), i += 1,
dt_ref = dt_list[i];
insert into( dt_names, substr( dt_ref << get name, 1, 31 ) );
);Re: シート名が 31 文字を超えるデータシートを Excel にエクスポートする jmp スクリプト私の質問に付け加えると、一度にエクスポートする個別の jmp ファイルが約 100 個あるとします。 スクリプトですべてのファイルの名前を個別に定義することはできません。 したがって、スクリプトに実行させたいのは、非常に長い名前のファイルを含む、その時点で開いている jmp ファイルをエクスポートすることです。
Re: シート名が 31 文字を超えるデータシートを Excel にエクスポートする jmp スクリプトどうもありがとう。 しかし、私は JMP 15 を使用しており、スクリプトが Transform コマンドを実行できないようです。 代替スクリプトを教えてください。
Re: シート名が 31 文字を超えるデータシートを Excel にエクスポートする jmp スクリプト申し訳ありませんが、jthi がスクリプトを書きました。
Re: シート名が 31 文字を超えるデータシートを Excel にエクスポートする jmp スクリプトDD1 さん、こんにちは。
まず、スクリプトを作成してくれた tdhi に感謝します。共有しても構わない場合は、クラッシュするスクリプトを次の URL の JMP テクニカル サポートに送信してください。 support@jmp.comまた、将来のリリースでクラッシュの動作を修正するよう努めます。
ブライアン・コーコラン
JMP開発
Re: シート名が 31 文字を超えるデータシートを Excel にエクスポートする jmp スクリプトSubstr を使用して文字列の一部を取得し、dt_ref << get name を使用してデータテーブルの名前を取得できます。 以下は、開始する必要がある例です (Transform Each が使用されているため、JMP16 が必要です)。
<BR />Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Abrasion.jmp");
dt1 << Set Name("veryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongname");
dt2 << Set Name("notsolongname");
dt_list = {dt1, dt2};
dt_names = Transform Each({dt_ref}, dt_list, Substr(dt_ref << get name, 1, 31));
Show(dt_names);
Create Excel Workbook("$TEMP/MyWorkbook.xlsx", dt_list, dt_names);
Close(dt1, no save);
Close(dt2, no save);