如何从SAS删除Excel工作簿的选项卡?

我有以下的macros:

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

我的问题是,有时这个macros不删除标签,如果它已经存在。 无论如何,从SAS,我可以检查是否存在一个选项卡,如果它删除它呢?

 proc sql; drop table <NAME OF EXCEL TAB>; quit; 

您可以使用下面的macros通过DDE在Excel中删除工作表。 它要求您要删除工作表的工作簿是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);