Si, el Server.Transfer cambia el hilo de ejecución de la página que estás actualmente hacia la que le pasas por parametro. Algo importante en esto es que te mantiene la misma URL desde donde llamaste a este objeto, es decir, el usuario va a pensar que está en la página Index.asp, cuando en realidad se encuentra en Plantilla1.asp (por ejemplo). Actúa de manera diferente al Response.Redirect, que envía una nueva petición al navegador para decirle que se "mueva" hacia otra página. Eso significa que además, Server.Transfer es más efectivo que Response.Redirect, ya que la transferencia se realiza en el mismo servidor, y no como Response.Redirect que significa un viaje más al cliente, para que después desde este se envíe la nueva petición hacia el servidor.
La forma de utilizarlo es similar, le pasas como parametro la página hacia donde querés se transfiera, por ejemplo, Server.Transfer("Plantilla1.asp")
Si utilizas una base de datos para almacenar la plantilla, entonces podrías hacer algo como esto:
Código:
set conn = Server.CreateObject("ADODB.Connection")
set RS = Server.CreateObject("ADODB.RecordSet")
conn.Open StringDeConexion
RS.Open "SELECT Plantilla FROM TablaPlantillas"
RS.MoveFirst()
Plantilla = RS("Plantilla")
RS.Close()
conn.Close()
set RS = nothing
set conn = nothing
Server.Transfer(Plantilla)
Si bien el ejemplo de hacerlo con base de datos es el más simple de entender, supongo que sería mucho mejor hacerlo con un simple archivo de texto y que desde ahí puedas leer la plantilla que seleccionaste, ya que siempre va a ser un solo dato el que va a contener.
Espero que se vaya encaminando por ese lado la solución.
Saludos!.