DDE機能使用時の、マクロ変数の参照

[OS]Windows
[リリース]
[キーワード] DDE,MACRO

[質問]

Windows版SASにおいて、DDE機能を用いてアプリケーション(Microsoft Excelなど)にコマンドを送る場合、 そのコマンド内でマクロ変数の参照は可能ですか。

[回答]

DDE機能によりコマンドを送るための記述には、通常引用符が複数含まれます。 一方、マクロ変数を参照する場合にも、複引用符を使用する必要があります。

このような場合、引数に指定された文字列に対してクォート処理を行う必要があります。 以下の例は、Microsoft Excel バージョン 5.0 にコマンドを送る記述例です(OPEN や CUT、PASTE などはMicrosoft Excelのマクロ関数です)。

filename cmds dde 'excel|system';
%LET cell=R1C1:R5C5;
  data _null_;
    file cmds;
    put '[open("c:\book1.xls")]';
    put "[cut(%BQUOTE("&cell"))]";
    put '[paste("r2c7")]';
    put '[save.as("c:\xxx\new.xls")]';
run;

上の例では、cut("&cell")の部分の複引用符を %BQUOTE マクロ関数を用いてクォート処理しています。 その他、 cut(""&cell"")と複引用符を2つ続けて記述することにより、 複引用符内で複引用符をクォートすることもできます。