Скопируйте листы с udf в новую книгу

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

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

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

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

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

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

Кто-нибудь знает, как действовать?


person hend    schedule 22.08.2014    source источник


Ответы (3)


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

  1. Скопируйте листы внутри существующего файла.
  2. Скопируйте, затем вставьте значения всей информации во вновь скопированный лист (в существующий файл)
  3. Переместите только что скопированный (и недавно вставленные значения) лист в новый файл.
person guitarthrower    schedule 22.08.2014
comment
Боже, это так просто и очевидно, я не могу поверить, что не думал об этом раньше! ¬¬ 'спасибо! - person hend; 22.08.2014
comment
Мы все были там! И добро пожаловать в StackOverflow. Если это помогло, обязательно примите ответ, чтобы другие знали. - person guitarthrower; 22.08.2014
comment
@hend вы можете нажать на галочку, чтобы он стал зеленым! За это вы получите 2 очка. - person whytheq; 24.08.2014

Если вы запросили код, вы можете автоматизировать решение guitarthrower, как показано ниже (где вы бы изменили имена листов в книге на скопировано ниже)

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
person brettdj    schedule 24.08.2014
comment
не хорошо. когда происходит копирование, создается новый файл, который становится ActiveWorkbook, который не имеет представления о UDF в исходной книге. - person robotik; 29.09.2016
comment
@robotik вопрос, в котором конкретно просили, чтобы копии были только ценностями. - person brettdj; 29.09.2016
comment
после копирования, прежде чем вы превратите их в значения, они уже не могут вычислить UDF и выдать ошибку #NAME? - person robotik; 04.10.2016

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

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

введите описание изображения здесь

  • Затем щелкните правой кнопкой мыши еще раз и выберите «Вставить только специальные значения выбора».
  • Теперь удалите все листы, которые вы не хотите включать.
person whytheq    schedule 22.08.2014
comment
Вы ответили почти так же, как и я! Но вы опередили меня на минуту и ​​включили картинку, поэтому я удалил свой ответ. : P Я предлагаю, как лучшую практику, чтобы @hend save первым, чтобы избежать случайного сохранения его / ее файла и потери всех его / ее UDF. - person n8.; 22.08.2014
comment
В моем файле много кода VBA, много других листов и много условных форматов. В моем новом файле этого нет. Я использовал предложение guitarthrower, так как оно позволяет легко получить именно то, что я хочу, в моем новом файле. Но большое вам спасибо! - person hend; 23.08.2014