If using xlsm format is acceptable (i.e. you already have code), then another way that I can think of is to use XLM GET.WORKBOOK function.
Personally I prefer your method, but I thought I would throw this in.
This is quite a quick mash-up so no doubt lots of room for improvement, and I think perhaps I should have used the name to do more of the grinding?
I haven't mashed up a sample as tidy as yours. Perhaps I'll revisit this later today.