Как заставить ПК SAS DDE Sever Code взаимодействовать с Windows 10 Excel 2016 - PullRequest
0 голосов
/ 29 августа 2018

Я установил код в ПК SAS в моей Windows 7 с Excel 2010 и ПК SAS 9.4. По сути, код взял набор данных 'wide2' и вставил его в единственный файл Excel, который открыт в ОС в тот момент, а затем сохранил его. Ниже приведен код, который я использовал:

%macro paste(number);


proc print data=wide2;
run;

PROC CONTENTS DATA=wide2 /*NOPRINT*/ OUT=CNT ;
RUN;
PROC SORT DATA=CNT ;
BY VARNUM ;
RUN;


PROC SQL /*NOPRINT*/;
SELECT NAME
INTO: VARS SEPARATED BY ' '
FROM CNT ;
SELECT COUNT(DISTINCT NAME)
INTO: COLS SEPARATED BY ' '
FROM CNT ;
SELECT NOBS
INTO: ROWS
FROM CNT
WHERE VARNUM = 1;
QUIT;



proc print data=cnt;run;


FILENAME TEMP DDE "EXCEL|Sheet&number.!R1C1:R200C200" ;


data _null_ ;
  file temp ;
  if _n_=1 then do;
    do _n_=1 to &cols ;
      set cnt(keep=name rename=(name=__name__)) ;
      put __name__ @;
    end;
    put;
  end;
  set wide2 ;
  put &vars ;
run ;
%mend paste;

Поэтому, когда я выполнял макрос, такой как% paste (1), он вставлял данные в лист Excel1.

Теперь мы перешли на Windows 10, которая имеет ту же версию SAS для ПК, но Excel 2016. Когда я запускаю один и тот же код с тем же набором данных, ПК SAS зависает на вечность через пару секунд, а затем мне нужно просто убить процесс. С открытым файлом excel ничего не происходит. Я даже не вижу журнал, так как ПК SAS зависает. Пожалуйста, предложите решение для этого. (Верхняя панель PCSAS, когда он зависает, говорит «выполняется шаг DATA»)

1 Ответ

0 голосов
/ 29 августа 2018

Сколько столбцов и строк в наборе данных wide2? Ваш опубликованный код работал в моей системе с SAS 9.4M4 и Office 365. Я использовал этот набор данных.

data wide2;
  do id=1 to 3;
    array x(15) (1:15);
    output;
  end;
  format _numeric_ 2.;
run;
...