You didn't post the exact error you're getting but bsaed on your query, I'd guess that you don't have apostrophes in your filename.
Also if I recall correctly the openrowset command should be concatenated to a string and then executed if you use variables.
So, have a try with something like:
...
declare sqltext varxhar(1000);
...
set sqltext = 'select * into General_holydays_details from OPENROWSET(''Microsoft.jet.OLEDB.4.0'',''Excel 8.0;DATABASE='''+@filname+ '''Select Date,Day,Reason from [sheet1$])';
print (sqltext)
execute (sqltext)
...