Как удалить вкладку книги Excel из SAS? - PullRequest
2 голосов
/ 04 октября 2010

У меня есть следующий макрос:

%macro export_set_excel(data,tabname);
    PROC EXPORT DATA= &data. OUTFILE= "&results." DBMS=EXCEL REPLACE;
            SHEET=&tabname.; 
        RUN;
%mend export_set_excel;

Моя проблема в том, что иногда этот макрос не удаляет вкладку, если она уже существует. В любом случае, из SAS я могу проверить, существует ли вкладка, и удалить ее, если она есть?

Ответы [ 2 ]

4 голосов
/ 05 октября 2010

Вы можете использовать приведенный ниже макрос для удаления листа в Excel через DDE. Требуется, чтобы рабочая книга, из которой вы хотите удалить лист, была текущей активной книгой в Excel.

/******************************************************************************
** PROGRAM:  MACRO.DDE_WORKSHEET_DELETE.SAS
**
** DESCRIPTION: DELETES THE SPECIFIED WORKSHEET FROM THE ACTIVE WORKBOOK IN 
**              EXCEL.
**
** PARAMETERS: iWORKSHEET: THE NAME OF THE WORKSHEET.  INCLUDE ANY SPACES THAT
**                         MAY BE CONTAINED IN THE NAME OF THE WORKSHEET.
**                         
** NOTES: SEE OTHER DDE_MACRO* FILES FOR MORE INFORMATION.
**
*******************************************************************************
** VERSION:
** 1.0 ON: 01APR10 BY: RP
**     CREATED.  
******************************************************************************/
%macro dde_worksheet_delete(iWorksheet=);
  filename cmdexcel dde 'excel|system';
  data _null_;
    file cmdexcel;

    /*
    ** DELETE WORKSHEET.  NEED TO TEMPORARILY TURN 
    ** OFF ERROR CHECKING TO SUPPRESS PROMPT.
    */
    put '[error(false)]';
    put "%str([workbook.delete(%"&iWorksheet%")])";
    put '[error(true)]';
  run;
  filename cmdexcel clear;
%mend;


/*
** EXAMPLE USAGE:
*/
%dde_worksheet_delete(iWorksheet=Sheet1);
3 голосов
/ 04 октября 2010
proc sql; drop table <NAME OF EXCEL TAB>; quit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...