/*
      tec00_02.sas Verby K.T. 2000/11/21(火)12:36:56

      org. hizo9701.SAS by K.T. Ver1.1  1997/10/15(水)11:40:06
      SASとEXCELでデータ交換をする

      注意1  EXCELを起動してから実行すること。
              (さらに「EXCELシートの内容をSASへ引き渡すサンプル1,2」 を
                実行するには事前にtec00_02.xlsをEXCELに読込んでおくこと)
      注意2  bookを指定しないと,カレントのbook(通常はBook1)が指定された
              ことになる。book名を指定する方法は,
              「EXCELシートの内容をSASへ引き渡すサンプル1」
              を参照のこと。;
      注意3  (該当するbookの) sheet が(削除をした等で)存在していないと,
              何も生じないかエラーになる。
*/

* --------------------------------- ;
* SAS出力をEXCELへ引き渡すサンプル1 ;
* --------------------------------- ;
*もっとも単純な例;

FILENAME d1 DDE 'EXCEL|SHEET1!R1C1:R6C3';
DATA d1;
   FILE d1;
   PUT 'ID' ' SEX' ' HEIGHT';
   PUT '01' ' F ' '150 ';
   PUT '02' ' F ' '155 ';
   PUT '03' ' M ' '160 ';
   PUT '04' ' M ' '165 ';
   PUT '05' ' M ' '170 ';
RUN;

* --------------------------------- ;
* SAS出力をEXCELへ引き渡すサンプル2 ;
* --------------------------------- ;
*  SASプログラミングガイド('97版)の付録(norm2.sas)参照        ;
*  EXCELのSHEET2の1行目から100行目まで,1列目から50列目まで指定 ;
*  (実際に使用するより大き目に指定しておけば良い)             ;

FILENAME d2 DDE 'EXCEL|SHEET2!R1C1:R100C50';

DATA d2;
   FILE d2;
   z=0; n=0;
   PUT 'Z表 '@ ; *縦横見出しの交点の空白部分;
   DO i = 0 to 9 BY 1; PUT i  @; END; PUT; *横見出し;
   DO z = 0 TO 3.0 BY 0.1;
      PUT z @; *縦見出し;
      DO i = 0 to 9 BY 1;
         n = PROBNORM(Z+i/100)-0.5;
         PUT n @; *数値表本体;
      END; PUT;
  END;
RUN;

* --------------------------------- ;
* SAS出力をEXCELへ引き渡すサンプル3 ;
* --------------------------------- ;
*欠損値や空白を含む文字データを送る場合;
*book1を指定したことに注意;
*  EXCELのBOOK1のSHEET3の1行目から2行目まで,1列目から3列目まで指定 ;
FILENAME d3 DDE 'EXCEL|SHEET3!R1C1:R2C3';
DATA d3;
   FILE d3 NOTAB; * NOTABが重要 ;
   miss=.;
   misschar=' ';
   text='toyomura Kazuma';
   tb='09'x; *TAB コード;
   PUT miss tb misschar tb text; * TAB 区切りにして出力
RUN;

* ----------------------------------------- ;
* EXCELシートの内容をSASへ引き渡すサンプル1 ;
* ----------------------------------------- ;
*もっとも単純な例;
FILENAME d4 DDE 'EXCEL|[hizo9701.xls]SHEET4!R2C1:R6C3';
DATA d4;
   INFILE d4 ;
   INPUT ID$ sex$ height;
RUN;
PROC PRINT;
RUN;

* ----------------------------------------- ;
* EXCELシートの内容をSASへ引き渡すサンプル2 ;
* ----------------------------------------- ;
*欠損値や空白を含む文字データを送る場合;
FILENAME d5 DDE 'EXCEL|[hizo9701.xls]SHEET5!R2C1:R6C3';
DATA d5;
   INFILE d5 DLM='09'x NOTAB DSD MISSOVER ;
   INPUT ID$ sex$ height;
   LABEL ID='ID' sex='性別' height='身長';
RUN;
PROC PRINT LABEL;
RUN;

ENDSAS;
* FILENAME d1 DDE 'EXCEL|SHEET1!R1C1:R100C50' TIMEOUT=-1; *制限時間解除;

戻る  進む  ホームページへ
mailto: toyomura@hokusei.ac.jp
home page: http://www.ipc.hokusei.ac.jp/~z00105/index.html