BookmarkSubscribeRSS Feed

Microsoft Excelへのデータの複数シート出力について

Started ‎03-13-2018 by
Modified ‎04-19-2018 by
Views 2,148

質問

複数のSASデータセットを、1つのMicrosoft Excelファイル(ブック)内で複数のシートに分けて出力する方法を教えてください。

回答

EXPORTプロシジャでは、同一ブック内の複数シートへの出力はできません。次の2通りの方法で出力する方法があります。

  • DDE の機能(Base SAS)を使用してExcelシートに書き込む方法
  • SAS/ACCESS to ODBCを用いてExcelシートに書き込む方法

具体的な説明とプログラム例をご紹介します。

 

 ■ DDE の機能を使用してExcelシートに書き込む方法

 

   DDEは、Dynamic Data Exchange の略で、Microsoft社が提供しているWindowsアプリケーション間でのデータ交換に広く

   使用されているプロトコルです(DDEの詳細については、Microsoft社提供、市販されている書籍などでご確認ください)。

   SASでは、このDDEプロトコルを利用して、MS-Excelにデータを出力することが可能です(※ MS-ExcelがSASと同じPCに

   インストールされていることが必要です)。
   以下のプログラム例では、2つのシートに出力していますが、この部分を適宜変更することにより、さらに複数のシートに

   対して書き込むことができます。

 

OPTIONS NOXWAIT NOXSYNC;
X "start excel";
                                          /* MS Excel を起動 */
DATA _null_;
  x=SLEEP(10);
RUN;
                                 /* Excelの起動を10秒待機 */
                        /* 待機時間は環境に応じて変えてください */

FILENAME ddedata DDE 'excel|sheet1!r1c1:r100c3';
                                 /* DDEを利用したエクセル出力 */
                                               /* シート1枚目 */
                         /* 乱数を使用して、サンプルを作成します */
DATA _null_;
  FILE ddedata;
  DO i = 1 TO 100;
    x = RANUNI(i);
    y = 10 + x;
    z = x - 10;
    PUT x y z;
  END;
RUN;
                                  /* Excelへの書き込みを待機 */
DATA _null_;
  x=SLEEP(10);
RUN;

FILENAME ddedata2 DDE 'excel|sheet2!r1c1:r100c3';
                                              /* シート2枚目 */
                       /* 乱数を使用して、サンプルを作成します */
DATA _null_;
  FILE ddedata2;
  DO i = 1 TO 100;
    x = RANUNI(i);
    y = 20 + x;
    z = x - 30;
    PUT x y z;
  END;
RUN;

 

■ SAS/ACCESS to ODBCを用いてExcelシートに書き込む方法

 

  1. データソースとしてシステムまたはユーザーDSNを事前に定義します。

    データソースの定義は、[ODBC データ ソース アドミニストレーター]を開き、データソースを定義します。なお、詳細の定義方法につきましては、Microsoft提供のヘルプ等をご参照ください。
    [ODBC データ ソース アドミニストレーター]は、SASのビット数に合わせて、定義する必要があります。

    一般的に、以下の実行ファイルより、[ODBC データ ソース アドミニストレーター]は、開くことができます。
    32ビットの[ODBC データ ソース アドミニストレーター]
    C:\Windows\SysWOW64\odbcad32.exe

    64ビットの[ODBC データ ソース アドミニストレーター]
    C:\WINDOWS\system32\odbcad32.exe

     

  2. ライブラリを割り当てます。
    libname mylib odbc dsn=Excel;
                                  /*データソース名をExcel とします。*/
          /*上記データソースの設定で定義した名前を指定してください。*/
    
    

     

  3. 複数のシート別に出力します。下記の例では、sashelp.classのデータを利用しています。
    DATA mylib.sheet1a;
     SET sashelp.class;
    RUN;
                                            /* 新しくsheet1a を作成 */
    DATA mylib.sheet2a;
     SET sashelp.class;
    RUN;
                                            /* 新しくsheet2a を作成 */
    
    

     

  4. SASを終了せずに作成したExcelファイルをExcelから利用するには、暗黙的に適用されたロックを解除するために、ライブラリの割り当てを開放する必要があります。
    libname mylib clear;
    
    

 

なお、Excelへの複数シート出力に関するサンプルのマクロを、下記のURLで公開しています。あわせてご参照ください。

URL:http://support.sas.com/kb/6/695.html

 

Version history
Last update:
‎04-19-2018 12:54 AM
Updated by:
Contributors

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Article Tags

SAS Support Communitiesのユーザーガイドライン


コミュニティの基本的なガイドラインについてご説明します。まずは、こちらをご参照ください。

詳細を読む

 

SAS Support CommunitiesのFAQ


SAS Support CommunitiesのFAQはヘルプに記載されています。参照方法は、こちらからご確認ください。

詳細を読む

 

質問や意見の投稿と返信方法について


Japan SAS Discussionページに質問や意見(メッセージ)を投稿/返信する方法を簡単にご説明します。

詳細を読む