じゃあその場合の、正しいやり方は何ですか?と質問をうけたので、それについて書きます。
あ、今回のやつを実行するにはSAS ACCESSのライセンスが必要で、かつ9.2以降です。
今、ラベルのついた以下のデータセットがあったとします。
data Q1;
X='い';Y='ろ';output;
X='は';Y='に';output;
label X='ラベルX' Y='ラベルY';
run;
存在しないパスに対してLIBNAMEを指定して、新しいエクセルファイル「AA.xlsx」を出現させ、
そのままシートA1とA2を作成するコードを実行してlibnameを解除します。
A2のほうには(dblabel=YES)を指定しています。
libname OUTEX "D:\AA.xlsx" header=yes scantext=no;
data OUTEX.A1;
set Q1;
run;
data OUTEX.A2(dblabel=YES);
set Q1;
run;
libname OUTEX clear;
そしてエクセルを開いて、2つのシートを比較してみます。
【シートA1】
【シートA2】
といった感じです。
こんにちは。
返信削除ちょっと記事の内容と逸れてしまうかもしれないんですが、、
libnameでセル範囲指定&「scan_text=no」でやった場合、
もし出力したい文字が500文字とかのコメントだった場合って、
excel側のlengthが足りないからか、エラーがでてしまって出力できないんですが、何かオプションとかで回避ってできるんでしょうかね??
コメント有難うございます。
返信削除以下の通りに試してみてください。
①libname のオプションでdbmax_TEXT=500をつける(500の部分はなんでも)
②modify OUTEX.'Sheet1$'n(dbmax_TEXT=500 dbforce=YES)
のようにmodifyの部分に()でオプションを入れてみてください。
それで実行して
「ERROR: During update: Data value violated the schema for column F1」というエラーメッセージで
ROLLBACKしてしまうのであれば、
SASのHotFixをあてて、解決できるらしいんですが、なんか僕のPCうまくインストールすらできなくて
自己検証できてないのです、、、
http://support.sas.com/kb/38/816.html
ありがとうございます。
返信削除なるほど。modifyにもdbmax_TEXTを入れるんですね!
こちらの環境はSAS9.3なんですが、
該当しそうな9.3のhotfixは前にあててたんですが、やっぱりエラー吐いちゃいますね。。
もうちょっと調べてみますね。