0

SAS EG から Excel ファイルをエクスポートしようとしています。以下のコードを使用していますが、正常に動作します。

proc export dbms=excelcs
data= MONTH
 file="A:\D1\D2\FILE.xlsb" replace; 
 port=9621; 
 server="pwn59000.corp.ds.fedex.com"; 
  sheet='month'; 
run;

proc export dbms=excelcs
data= DAY
 file="A:\D1\D2\FILE.xlsb" replace; 
 port=9621; 
 server="pwn59000.corp.ds.fedex.com"; 
  sheet='day'; 
run;

proc export dbms=excelcs
data= YEAR
 file="A:\D1\D2\FILE.xlsb" replace; 
 port=9621; 
 server="pwn59000.corp.ds.fedex.com"; 
  sheet='year'; 
run;

したがって、月、年、日の 3 枚のファイル名「FILE」が得られます。ファイルをエクスポートした後、年、月、日のそれぞれのグラフを含む 3 つのシートを Excel ファイルに追加し、シートに day1、month1、year1 という名前を付けました。その後、年、月、日のシートを非表示にして、ユーザーがシート day1、month1、および year1 のグラフのみを表示できるようにします。このファイルは毎日 SAS からエクスポートされます。翌日ファイルがエクスポートされたとき、非表示にする必要があるシートが非表示ではなく表示されていました。PROC エクスポートまたはその他の手順を使用してシートを非表示にする方法はありますか。助けてください。

ありがとう !

4

2 に答える 2

0

データセットを CSV ファイルにエクスポートしてから、Excel からのデータ接続を使用して、Excel ワークブックを開くたびに csv ファイルを非表示のシートにインポートすることができます。

または、SAS で libname ステートメントを使用して Excel ファイルを参照してみてください。

libname xl pcfiles type=Excel unicode=yes port='YOURPORT' server='YOURSERVER' path = "YOURPATH\YOUREXCELFILE.xls" ;

次に、非表示のシートを削除します

proc datasets lib=xl;
delete HIDDENSHEETNAME;
run;

そして、新しいデータを再挿入します

data xl.HIDDENSHEETNAME;
set YOURDATA;
run;

もちろん、すべての隠しシートに対してこれを繰り返す必要があります。

于 2013-11-07T11:42:51.927 に答える
0

DDE プロトコルを使用して、非表示/非表示 (および他の多くの興味深いこと) を行うことができます。このような:

最初に、3 枚のシートでテスト用の Excel ファイルを作成します

libname xlibr excel 'C:\Users\Dmitry\Google Drive\SAS\test.xlsx';
data xlibr.sheet1;
   set sashelp.class;
run;

data xlibr.sheet2;
    set sashelp.class;
run;

data xlibr.sheet3;
   set sashelp.class;
run;

libname xlibr clear;

ここで、Excel をプログラムで開く必要があります (既に開いている場合は問題ありません)。

options noxwait noxsync;
filename sas2xls dde 'excel|system';

data _null_;
  length fid rc start stop time 8;
  fid=fopen('sas2xls','s');
  put fid=;
  if fid = 0 then do;
    rc=system('start excel');
    start=datetime();
    stop=start+10;
    do while(fid^=0);
        fid=fopen('sas2xls','s');
        put fid=;
        time=datetime();
        if time > stop then fid=0;
    end;
  end;
run;

次に、コマンドを Excel に送信し、実際に人間のマウス クリックをシミュレートします。

1) ワークブックを開く

2) シート 1 を非表示

3) エラーを無効にする (ポップアップ ダイアログを表示せずにファイルを保存して閉じるため)

4) 保存

5) ファイルを閉じる

filename sas2xls dde 'excel|system';
data _null_;
    file sas2xls;
    put '[open("C:\Users\Dmitry\Google Drive\SAS\test.xlsx")]';
    put '[workbook.hide("Sheet1")]';
    put '[error(false)]';
    put '[save()]';
    put '[file.close(false)]';
run;
于 2013-12-04T00:00:13.073 に答える