Ігор Гончаренко, оба преждложенных варианта не подойдут.
Вариант с копированием и так реализован в виде тупого переноса листа из файла в файл. Этот вариант сейчас работает в качестве затычки и временного решения моей проблемы. Но это опять же перенос туда-сюда. Не желаю я ничего таскать из книги в книгу. Это отжерает ресурсы - процессорное время. Ваш вариант еще медлительнее, чем перетаскивания листа целиком, ИМХО.
Вариант второй с тиражированием ссылки говорит о Вашем непонимании задачи.
Большинство процедур у меня работали с нотацией Set WS1 = workbooks(a).worksheets(b) . В ней "a" было константно на протяжении всего исполнения процедуры. Т.е помимо указанной ссылки через workbooks(a) в них было определено еще куча всего.
В новых условиях для отдельных видов данных (т.е только для части кода) "a" перестает быть константой. (вплоть до того, что в одной и той же строке кода в цикле к примеру "а" будет разным, а в соседних строках кода по логике подпрограммы будет использоваться, словно это константное только на один единственно возможный предопределенный файл. Таким образом возникает конфликт присвоения. Если одно и то же "а" останется по прежнему константным в процессе исполнения всего кода подпрограммы, то часть операторов Set Q = workbooks(a).worksheets(b) наприсваивают что-то не то. С другой стороны, если их делать не константными, то что-то не то наприсваивается в другом месте этой же подпрограммы. Короче, как ни крути, а WS1 = workbooks(a).worksheets(b) без альяса не будет работать корректно. А как запузырить этот альясный путь на данные - ломаю голову. По варианту второму сформулировал путано. Мне нужно подумать, как почетче и лаконичнее на конкретном примере показать, что имею ввиду.