SAS EG通过导出Excel

时间:2018-12-20 11:05:19

标签: sas sas-macro

我如何使用密码保护excel文件,因为在sas EG中不支持DDE。

我正在使用它,但是我没有convert.vbs,所以我在哪里可以得到它?

/***********************************************/                                                                                                                                       
/* Create a test worksheet to password protect */ 
/***********************************************/                                                                                                      

ods tagsets.excelxp file="c:\temp.xml";                                                                                                 

proc print data=sashelp.class;                                                                                                          
run;                                                                                                                                    

ods tagsets.excelxp close;                                                                                                              

/*****************************************************************/                                                                                                                                        
/* Create and excecute a script file using the input XML file    */                                                                           
/* and the converted XLSX file. The value 51 is needed for XLSX. */                                                                           
/* Use the value of 1 for XLS files in the SaveAs command.       */ 
/*****************************************************************/                                                                        

%let XMLfile = c:\temp.xml;                                                                                                             
%let ExcelFile = c:\temp.xlsx;                                                                                                          

%let VBscript  = ***c:\convert.vbs***;                                                                                      
%let password=test;                                                                                                                    

data _null_;                                                                                                                            
   file "&vbscript" lrecl=200;                                                                                                            
   put 'Dim xlApp, xlWkb, SourceFile, TargetFile';                                                                                         
   put 'Set xlApp = CreateObject("excel.application")';                                                                                    
   put 'SourceFile="' "&XMLfile" '"';                                                                                                      
   put 'Set xlWkb = xlApp.Workbooks.Open(SourceFile)';                                                                                     
   put 'TargetFile="' "&ExcelFile" '"';                                                                                                    

   put 'xlApp.DisplayAlerts=false';                                                                                                        
   put "xlWkb.SaveAs TargetFile, 51,""&password""";                                                                                          
   put 'xlApp.DisplayAlerts=true';                                                                                                         
   put 'xlWkb.close';                                                                                                                      
run;                                                                                                                                    

options noxwait noxsync;                                                                                                                

x "cscript ""&vbscript""";

2 个答案:

答案 0 :(得分:1)

您的代码似乎为您创建了文件c:\convert.vbs,然后运行它。您只需删除星号,使其成为有效的文件路径。

答案 1 :(得分:0)

如果您没有DDE,那么代码也不太可能为您工作。

最后一行

x "cscript ""&vbscript""";

是对您的操作系统的命令。通常,如果禁用了DDE,则也会禁用这种功能。您可以通过检查XCMD选项进行检查。

proc options option=xcmd;
run;

如果启用了XCMD,您将看到:

  

XCMD在SAS中启用X命令。

您只能在启动时更改该设置,有时还需要成为管理员。