2016-05-19 8 views
0

Предположим, что у вас есть переменные w2A и wbB Excel.Workbook. Первая переменная - это книга, которую вы назначили с помощью Excel.Workbooks.Open.Скопируйте переменную рабочей книги Excel в VBA

Теперь мой вопрос: Как вы можете назначить wbA для wbB, чтобы wbB была копией wbA, а не только ссылкой на нее?

Я пробовал простой wbB = wbA, но это просто похоже на ссылку wbB на wbA.

Большое спасибо!

+0

Вы хотите клонировать его? – Gustav

ответ

2

wbAпункты к объекту книги в памяти, это не настоящая книга. Точно так же, если вы

Set wbB = wbA 

Вы просто создаете еще один указатель на же книги, которая находится в памяти, хотя и через другой указатель.

Если вы на самом деле хотите реальной копии книги, то вы должны сделать это - скопировать фактический книгу и установите wbB в этого экземпляр вместо этого.

+0

Привет! Да, я так и думал, черт возьми. Поэтому я предполагаю, что единственным способом было бы сделать что-то вроде wbA.savecopyas, а затем выбрать это с помощью wbB? Или вы знаете лучшее решение? –

+0

именно это, неважно, сколько переменных вы используете, вы фактически просто создаете цепочку указателей назад к одной и той же книге в памяти - так что вам нужно физически скопировать книгу и создать новый указатель на _that_ one вместо , –

+0

FYI, вы можете использовать 'Set wb2 = Workbooks.Add (« путь к wb1 здесь »)', чтобы создать новую книгу, используя другую в качестве шаблона. – Rory

Смежные вопросы