Ah, that explains it.
Well, if you know macro coding, then your life will get easier. The "hardcoded" example that I had is shown below. I'm sure you can figure out how to get it working.
Note that the internal documentation for SHEET_INTERVAL (obtained by using doc='Help') says that:
[pre]
Sheet_Interval: Default Value 'Table'
Values: Table, Page, Bygroup, Proc, None.
This option controls how many tables will go in a worksheet.
In reality only one table is allowed per worksheet. To get more
than one table, the tables are actually combined into one.
Specifying a sheet interval will cause the current worksheet to close.
It is recommended that this always be the first option to insure that
The options following it apply to the new worksheet rather than the
last worksheet.
[/pre]
So, even if you respecify SHEET_INTERVAL='NONE' where you want a new sheet, it will close the current sheet and start a new sheet -- this is the equivalent of being able to put STARTPAGE=NOW with ODS PDF and ODS RTF.
With TAGSETS.EXCELXP, I believe the way you would get the outputs from 2 PROC PRINTS on the same worksheet would be to use WHERE processing to "simulate" by group processing (or using some kind of macro logic). The WHERE approach is shown in the program below. (Or else, as Peter suggested, rearrange your output objects with ODS DOCUMENT and PROC DOCUMENT.)
But, you still might have some finagling with ODS DOCUMENT, because what TAGSETS.EXCELXP is actually doing when you specify SHEET_INTERVAL='NONE' is combining your multiple separate tables into one "bigger" table.
Anyway, note that for this program, the two PROC PRINT steps both use SASHELP.SHOES. The first PROC PRINT displays different variables than the second PROC PRINT. The SHEET_INTERVAL='NONE' suboption puts both outputs on one worksheet. Then the ODS TAGSETS.EXCELXP statement with the new SHEET_NAME value and the SHEET_INTERVAL value does the equivalent of STARTPAGE=NOW for PDF by starting a new worksheet.
cynthia
[pre]
ods listing close;
title;
ods tagsets.ExcelXP file="c:\temp\onetab_per_region.xls" style=sasweb
options(doc='Help' sheet_interval='none' sheet_name="Africa");
proc print data=sashelp.shoes;
where region="Africa";
var region product sales;
run;
proc print data=sashelp.shoes;
where region="Africa";
var region subsidiary returns inventory;
run;
ods tagsets.Excelxp options(sheet_interval='none' sheet_name="Asia");
proc print data=sashelp.shoes;
where region="Asia";
var region product sales;
run;
proc print data=sashelp.shoes;
where region="Asia";
var region subsidiary returns inventory;
run;
ods _all_ close;
[/pre]