2014-08-22 11 views
3

У меня есть книга с 5 листами, заполненными UDF (пользовательские функции).
Мне нужно скопировать эти 5 листов в новую книгу, но мне нужны только значения.
Проблема в том, что при копировании этих листов все ячейки с UDF были сломаны с # значением на нем, потому что у меня нет моих макросов в этой новой книге.Скопируйте листы с udf в новую книгу

Я не могу скопировать модуль, потому что многие пользователи будут использовать эту книгу, и, возможно, их Excel не позволит мне манипулировать vba project.

Я пытался копировать и вставлять только значения между книгой, но это не работает. Я думаю, это потому, что у моего листа много объединенных строк и столбцов. Excel показывает сообщение об ошибке. Я буду переводить с португальского на английский здесь, может быть, Excel не использует это именно так:

Эта опция требует, чтобы объединенные ячейки были одинакового размера.

Я не понимаю эту ошибку. Я даже попытался сделать это вручную: скопируйте весь лист (щелкните правой кнопкой мыши, переместите и скопируйте), затем выберите весь использованный диапазон в моей оригинальной книге ctrl + c, затем выберите первую ячейку в новой книге, затем ctrl + v и затем вставьте только значения. И Excel вызывает ошибку. Я также попытался выбрать весь диапазон в новой книге, прежде чем нажимать ctrl + v. Та же проблема.

Я не знаю, что делать. То, что я делаю сейчас, это копирование и вставка только значений в мою оригинальную книгу, а затем копирование всего листа в новую книгу. Проблема в том, что это действие уничтожает мою первоначальную книгу, поэтому я должен закрыть ее и снова открыть, чего я не хотел делать.

У кого-нибудь есть идеи о том, как действовать?

+0

Не так много, связанные с этой должности, но [ Stack Overflow em Português] (http://pt.stackoverflow.com/help/dont-ask) может представлять интерес. – pnuts

ответ

2

Попробуйте эти шаги

  1. Копирование на листы внутри существующего файла.
  2. Скопируйте, затем вставьте значения всей информации на вновь скопированном листе (в существующем файле)
  3. Переместите только что скопированные (и вновь вставленные значения) лист в новый файл.
+1

Бог, это так просто и очевидно, я не могу поверить, что раньше об этом не думал! ¬¬ 'спасибо! – hend

+0

Мы все были там! И добро пожаловать в StackOverflow. Если это сделало трюк, обязательно примите ответ, чтобы другие узнали. – guitarthrower

+0

Я не могу голосовать! :/Как только я смогу, я вернусь сюда! – hend

1

Попробуйте это:

  • Скопируйте полный файл с помощью SaveAs
  • В копии файла перейдите к каждой из целевых листов.
  • правой кнопкой мыши верхнюю левую ячейку и выберите копию:

enter image description here

  • Затем щелкните правой кнопкой мыши еще раз и выберите вставить только специальные значения выбора.
  • Теперь удалите все листы, которые вы не хотите включать.
+0

Вы ответили почти точно, как я это сделал! Но вы избили меня за минуту и ​​включили картинку, поэтому я удалил свой ответ. : P Я предлагаю в качестве лучшей практики, что @hend «сохранить как» сначала, чтобы избежать случайной экономии по его/ее файлу и потерять все его UDF. –

+1

@ n8 Я добавлю ссылку – whytheq

+0

В моем файле много кода VBA, много других листов и множество условных форматов. Я не делаю этого в своем новом файле. Я использовал предложение guitarthrower, поскольку он упрощает доступ к тому, что я хочу в новом файле. Но спасибо вам большое! – hend

2

Учитывая вы просили код, вы можете автоматизировать guitarthrower-х solution, как показано ниже (где бы вы изменили свои имена листов в книге, которая будет скопирована ниже)

Sub Redone() 
Dim WB As Workbook 
Dim ws As Worksheet 

'runs on ActiveWorkbook 
Set WB = ActiveWorkbook 
WB.Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy 

'converts formulae to values on new workbook with the 5 specific sheets 
For Each ws In ActiveWorkbook.Sheets 
    ws.UsedRange.Value = ws.UsedRange.Value 
Next 

End Sub 
+0

нет хорошо. когда копия происходит, она создает новый файл, и это становится ActiveWorkbook, который не имеет представления о UDF в оригинальной книге. – robotik

+0

@robotik задал вопрос о том, чтобы копии были только значениями. – brettdj

+0

после копирования, прежде чем вы переводите их на значения, они уже не могут вычислить UDF и дать ошибку '#NAME? ' – robotik

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