Is there any condition to show/hide column?
If yes, then you can go to Settings>Presentation>Column Label>Conditional
This would satisfy and show column with your condition and export only available columns.
When you say send to XL with Hide Columns, you want to see the Hidden Column in XL but not in Qlik?
Yes a Macro can be used but I do not know which one.
The other workaround is not clean but it may just work for you?
Check the reply from Sudeep Mahapatra from above link.
He basically suggest to have 2 tables for same chart overlaying each other.
The visible table would be chart with hidden column or you can eliminate the column. The below table would have all the columns.
You'd need to uncheck the 'Caption' option in settings for hidden table and make caption visible for hidden.
In this way when users click XL they sending report from back table which has all columns.
Also in Layout uncheck the Allow Move/size.. so that the tables won't move if the users tries to drag it
Of course this would be resource heavy as you'd be using 2 tables but wouldn't matter if the app size is less with less records.