2017-11-14 19 views
2

でExcelワークシートを保護する:SASは、私はSASを使用してDDEを持つ既存のExcelシートを操作したいDDE

私は、次のコード(気をつけて、私はR(OWSのためのZ使用)及びcのための(列)を持っています! )Excelでドイツの言語設定の理由:

option noxwait noxsync; 
x call "C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE"; 

%let delay=5; 

data _null_; 
rc=sleep(&delay); 
run; 

filename sas2xl dde 'excel|system'; 

data _null_; 
rc=sleep(&delay); 
run; 

%let mapwkbk=H:\odstest.xlsx; 

data _null_; 
file sas2xl; 
rc=sleep(&delay); 
put '[open("' "&mapwkbk" '")]'; 
run; 


filename random dde 'excel|Daten!z2s1:z100s3'; 
data _null_; 
    set sashelp.class; 
    file random; 
    put name sex age; 
run; 


data _null_; 
file sas2xl; 
/*rc=sleep(&delay);*/ 
put '[workbook.select("Pivot")]'; 
put '[select("Z2S1")]'; 
put "[pivot.refresh()]"; 

put '[workbook.select("Daten")]'; 
put '[select("z1S2:z1s5")]'; 
put '[filter]'; 
put '[select("z1S10")]'; 
put '[filter]'; 

put '[column.width(0,"s1",false,1)]'; 
put '[column.width(0,"s6:s9",false,1)]'; 

put '[ActiveSheet.Protect("***")]'; 

put '[workbook.delete("Dim")]'; 


/*put "[save()]";*/ 
/*put "[quit()]";*/ 
run; 

今、私はパスワードシートDatenと設定オプションのアクティブuse autofilterを保護したいと思います。どのようにこれに到達するためのアイデア?

+0

このタイプの機能が本当に必要な場合は、SAS Add In Microsoft Officeを強くお勧めします。 – Reeza

+0

残念ながらSAS AMOはライセンスされていません。 – zuluk

答えて

2

ここで私がお勧めするのは、あなたがやろうとしていること(本当に両方の質問)を行うためのマクロを作成し、DDEを使用する必要がある場合はDDEを使用してマクロを呼び出します。これは、DDEを使用してあらゆる小さなことを行うよりはるかに簡単で、維持するのがはるかに簡単です(さらに、最終的にDDEから離れるときに移植性が向上します)。

これを行うと、マクロコードには余分なSAS言語ビットがすべて含まれていないため、(SAS開発者ではなくVBA開発者であっても)読み込み/簡単にマクロを呼び出します。

DDEはもはやサポートされていない古い技術であり、可能であれば新しい開発から離れるべきです。

+0

SASでVBAマクロを起動する方法のコード例がありますか?自分の環境でVBAマクロが無効になっているため、私が見つけたのは動作しませんでした。そこで、Excelシートにボタンを追加し、DDEでそのボタンを開き、ボタンをクリックして残りの作業を行いました。 – zuluk

+1

ご使用の環境でVBAマクロが無効になっている場合、マクロは機能しません。 – Joe

+1

@zuluk 100%はDDEをディッチすることについてJoeと同意します。見つけることができる他のソリューションに移動します。それはもはやサポートされておらず、それぞれの新しいバージョンのウィンドウでますます信頼できなくなっています。現在の環境では、強制的に1つのWindowsパッチが修復を超えてすべてのDDEプロセスを破り、強制的に移行されました。私のようにはなりません。別のメモで、これは便利です:http://support.sas.com/kb/48/682.html –

関連する問題