Click Here
%macro readpass(xlsfile1,xlsfile2,passwd,outfile,sheetname,getnames);
options macrogen symbolgen mprint nocaps; options noxwait noxsync;
%* we start excel here using this routine here *;
filename cmds dde 'excel|system';
data _null_;
length fid rc start stop time 8;
fid=fopen('cmds','s');
if (fid le 0) then do;
rc=system('start excel');
start=datetime();
stop=start+20;
do while (fid le 0);
fid=fopen('sas2xl','s');
time=datetime();
if (time ge stop) then fid=1;
end;
end;
rc=fclose(fid);
run; quit;
%* then we open the excel sheet here with its password *;
filename cmds dde 'excel|system';
data _null_;
file cmds;
put '[open("'"&xlsfile1"'",,,,"'"&passwd"'")]';
run;
%* then we save it without the password *;
data _null_;
file cmds;
put '[error("false")]';
put '[save.as("'"&xlsfile2"'",51,"")]';
put '[quit]';
run;
%* Then we import the file here *;
proc import datafile="&xlsfile2" out=&outfile dbms=xlsx replace;
%* sheet="%superq(datafilm&i)";
sheet="&sheetname";
getnames=&getnames;
run; quit;
%* then we destroy the non password excel file here *;
systask command "del ""&xlsfile2"" ";
proc contents data=&outfile varnum;
run;
%mend readpass;
%readpass(j:\access\accpcff\excelfiles\passpro.xlsx, /* name of the xlsx 2007 file */
c:\sastest\nopass.xlsx, /* temporary xls file for translation for import */
mypass, /* password of the excel spreadsheet */
work.temp1, /* name of the sas dataset you want to write */
sheet1, /* name of the sheet */
yes) ; /* getnames */