SAS EG Version 4.3.010196
I'm currently running a macro that creates multiple outputs based on a given condition. I want to option to export each data set to the same workbook on it's own individual tab.
For HIPPA reason I can't include any data, but regardless of the data set(s) created (Excluding files larger than 65,000 lines (xls) and 100++ (xlsx)) I still need to export each data set
into its own worksheet in one workbook.
Output will never exceed 65,000 lines or multiple sheets per book of 12.
Help is greatly appreciated
Signed New Jack...
*** DESIGN MACRO ***;
%macro Macro1(HHH);
PROC SQL;
CREATE TABLE WORK.Q1_&HHH AS
SELECT t1.*
FROM WORK.QUERY_1 t1
WHERE t1.Contract = "&HHH";
QUIT;
DATA WORK.Q2_&HHH;
SET WORK.Q1_&HHH;
IF Enrollment = . THEN Enrollment = 0;
IF Enrollment1 = . THEN Enrollment1 = 0;
RUN;
PROC SQL;
CREATE TABLE WORK.FINAL_&HHH AS
SELECT t1.PRODUCT,
t1.PlanType,
t1.'Organization Name'n,
t1.Contract,
t1.'EG or DP'n,
t1.PBP,
t1.'Plan Name'n,
t1.Service_Area,
t1.County,
t1.'Offers Part D'n,
t1.Enrollment,
t1.County1,
t1.Enrollment1,
(t1.Enrollment1 - t1.Enrollment) AS Change
FROM WORK.Q2_&HHH t1;
QUIT;
PROC DATASETS LIB=WORK NOLIST;
DELETE Q1_&HHH Q2_&HHH;
RUN;
%mend Macro1;
*** RUN MACRO ***;
%Macro1(H3359);
%Macro1(H3330);
%Macro1(H5549);
%Macro1(H3328);
%Macro1(H3361);
%Macro1(H3347);
%Macro1(H6181);
%Macro1(H3312);
%Macro1(H3370);
%Macro1(H3307);
%Macro1(H4866);
%Macro1(H5991);
%Macro1(H5528);
%let pc = XXXXXXXXXXXX;
%let folder = C:\Users\Temp;
data _null_;
dt=put( today( ),date9. );
call symput('dt',dt);
run;
proc export
data = DATASET1
outfile = "&folder.FILENAME_&dt..xls"
dbms = excelcs replace;
sheet = "EXCELSHEET1";
SERVER = "&pc";
run;
proc export
data = DATASET2
outfile = "&folder.FILENAME_&dt..xls"
dbms = excelcs replace;
sheet = "EXCELSHEET2";
SERVER = "&pc";
run;
So what's your question?
SAS allows you to specify the sheet and file in each export. You can append a sheet to each file.
For example the following should create an excel file with 2 tabs, one for each dataset outputted.
libname output excel "path to my file.xlsx";
data output.h3359;
set h3359;
run;
data output.h3330;
set h3330;
run;
libname output;
The libname output excel produced the following: ERROR: The EXCEL engine cannot be found.
I normally use
PROC EXPORT DATA = output
File = "path/filename.xls"
DBMS = xlsreplace;
SHEET= "sheetname"
RUN;
This only works with one sheet per run.
Thanks
Run your above code pointing to the same file but a different sheetname. What happens?
It creates a second file with the extension .BAK and the data corrupts and won't open
Unfortunately I can't test because I'm on a much higher version. I suggest contacting Tech Support, link at the bottom.
I'm not sure they support 9.1.3 anymore, which I think is your equivalent version.
%let pc = XXXXXXXXXXXX;
%let folder = C:\Users\Temp;
data _null_;
dt=put( today( ),date9. );
call symput('dt',dt);
run;
proc export
data = DATASET1
outfile = "&folder.FILENAME_&dt..xls"
dbms = excelcs replace;
sheet = "EXCELSHEET1";
SERVER = "&pc";
run;
proc export
data = DATASET2
outfile = "&folder.FILENAME_&dt..xls"
dbms = excelcs replace;
sheet = "EXCELSHEET2";
SERVER = "&pc";
run;
Hi Dsrountree. Thanks for the post about this issue. Could you help me about this? I tried, but I couldn't run.
My folder of excel is "D:\Vinculos_nuevos\SAS.xls" and the worksheet are "Table1","Table2" and "Table3"
The SAS table are "Sales","Revenue" and "Tax"
I need export "Sales" to "SAS.xls-Worksheet Table1"
"Revenue" to "SAS.xls-Worksheet Table2"
"Tax" to "SAS.xls-Worksheet Table3".
Thanks in advanced.
Regards,
This only works when &pc is linked to your individual PC name.
yes, are linked, but I couldn't run this code. How must be complete the code?
Thanks in advanced.
This was just sample code. I've found a work around for now. Doesn't involve any programming in SAS, just setting up some macros in Excel to pull the data from the SAS exported Excel file into an Excel file already created that has the charts and graphs on other tabs.
Thanks for responding.
I hit a wall trying to find a work around - Sorry.
hI also am working on something similar and hope someone can help. I am exporting data to an excel file, but in addition, I have other sheets in that file that I do not want to overwrite. basically, they are charts and graphs that will update from the updated data exporting from sas into excel.
i've tried using the following, but SAS doesn't like it when i use the outfile or excelcs options, and also i was having trouble with the server. i'm not quite sure what to put for my server name.
proc export
data = DATASET1
outfile = "&folder.FILENAME_&dt..xls"
dbms = excelcs replace;
sheet = "EXCELSHEET1";
SERVER = "&pc";
run;
just for some background. I'm running EG from a server 32 bit and have 32 bit Excel and have installed PC File Server.
i am able to use this code:
proc export
data = TD
file = "&folder.FILENAME_&dt..xlsx"
dbms = xlsx replace;
sheet = "EXCELSHEET1";
run;
But, the other two sheets in the file get wiped out and I don't want them to. Is there a way for me to prevent that from happening?
I've tried multipe ways taking out replace or using different sheeet names, but nothing seems to work.
Thank you for any help I can get!
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.