You can, though you have to use literals for the column number. Bind variables won't work because they're null when parsing the macro:
var col number;
exec :col := 2;
with rws as (
select * from hr.employees natural join hr.departments
)
select * from foo ( rws, :col ) ;
ORA-62565: The SQL Macro method failed with error(s).
ORA-06502: PL/SQL: numeric or value error: NULL index table key value