will this do? 
create proc xpSprintF
@body varchar(8000) = '',
@params varchar(1000) = '',
@paramSeparator varchar(10) = ','
as
begin
set @params = @params + @paramSeparator -- so we don't have to specially handle the last item
declare @param varchar(200),
@leftBodyOld varchar(8000),
@leftBodyNew varchar(8000),
@i int
set @i = 0
while @params <> '' and @i < 8000 -- max 8000 iterations
begin
select @param = replace(left(@params, charindex('"' + @paramSeparator, @params)), '"', ''),
@leftBodyOld = left(@body, charindex('%s', @body)+1),
@leftBodyNew = replace(@leftBodyOld, '%s', @param),
@body = replace(@body, @leftBodyOld, @leftBodyNew),
@params = replace(@params, '"' + @param + '"' + @paramSeparator, '')
set @i = @i + 1 -- max iterations... so we don't get an infinite loop by accident
end
select @body
end
go
declare @body varchar(8000), @params varchar(1000)
select @body = 'INSERT INTO %s VALUES (%s, %s)',
@params = '"table1","''1''","2"' -- no spaces between parameters!!!
--Parameters must be in format '"parameterValue","parameterValue2","parameterValue3"'
exec xpSprintF @body, @params
go
drop proc xpSprintF
Go with the flow & have fun! Else fight the flow 
Blog thingie: http://weblogs.sqlteam.com/mladenp