Excelファイルへのシートの追加と、シートへのデータの追加

[OS] ALL
[リリース] SAS System 9以降
[キーワード] ACCESS PC Files, LIBNAME, EXCEL engine, add sheet, append

[質問]

SASデータセットの内容を、既存のExcelファイルに新しいシートとして出力できますか。
また、既存のシートにデータを追加できますか。

[回答]

SAS 9.1のSAS/ACCESS Interface to PC Filesは、Excelエンジンをサポートしています。
このエンジンを使用して、既存のExcelファイルにシートを追加できます。

出力方法は、Excelファイルを新規に出力する場合と同様です。次のサンプルプログラムでは、既存のExcelファイル「c:¥DATA¥book1.xls」ファイルに対して、「excalss2」というシートを追加出力しています。


                              /* ライブラリ参照名の割り当て */
   LIBNAME ex EXCEL 'c:¥DATA¥book1.xls';

                              /* データの出力 */
   DATA ex.exclass2 ;
      SET sashelp.class;
   RUN;
                              /* ライブラリ参照名のクリア */
   LIBNAME ex CLEAR;

また、APPENDプロシジャを使用して、既存のExcelシートにデータを追加することも可能です。既存のExcelシートにデータを追加する際には、LIBNAMEステートメントで「SCANTEXT=NO」を指定する必要があります。

次のサンプルプログラムでは、「c:¥data¥book1.xls」ファイルに含まれるシート「exclass2」にデータを追加しています。


                              /* ライブラリの割り当て */
   LIBNAME ex EXCEL 'c:¥data¥book1.xls' SCANTEXT=NO;

                              /* APPENDプロシジャ */
   PROC APPEND BASE=ex.exclass2 DATA=llibref.data FORCE;
   RUN;

                              /* ライブラリ参照名のクリア */
   LIBNAME ex CLEAR;

上記のサンプルプログラムを実行すると、「変数の長さが一致しない」という下記のWARNINGメッセージがログに出力されますが、データは追加されます。


   WARNING: 変数 Name は BASE と DATA ファイル上で長さが一致しません。 (BASE 255 DATA 8).

Windows版SAS 8.2をご利用の場合は、弊社ホームページの下記FAQをご参照ください。

「Microsoft Excelへのデータの複数シート出力について」
http://www.sas.com/japan/service/technical/faq/list/body/pc054.html