Я знаю, что это классика жереха, но, думаю, вы поймете суть. Событие OnClick с Server.Transfer на страницу с кодом, подобным приведенному ниже.
Response.Clear()
Response.Buffer = False 'True
Response.AddHeader "Content-Disposition", "attachment;filename=" & PageTitle & ".xls"
Response.ContentType = "text/plain"
HERE GET YOUR FILE AND SEND IT TO THE RESPONSE AS A STRING....
RESPONSE.FLUSH