Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Копирование листов с помощью кода VBA, Исключение ошибок при копировании листов
 

Есть книга эксель — Акты . В книге Акты имеются 1 лист и 1 модуль (module1.bas). В модуле имеется функция GetStringA, возвращающая строковый результат (функция описана как As String). Функция имеет параметр (параметр описан как As Integer). На листе эта функция используется: в функцию подаются числа с 1 по 5. Так же функция используется в коде листа. Функция выдаёт результат. Всё казалось бы хорошо. Ранее копировал листы из текущей книги кодом VBA в новую книгу с помощью команды Sheets("4-й акт").Copy. После копирования работа книгой Акты прекращалась (книга закрывалась так же кодом VBA). Сейчас возникла необходимость после копирования листа в новую книгу, сохранить новую книгу и продолжить работу над книгой Акты.

Сейчас с помощью кода

Код
        With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
            .DeleteLines 1, .CountOfLines
        End With

я удаляю весь код в новой книге (код с модуля листа). Формулы превращаю в значения с помощью кода

Код
        With ActiveWorkbook.Sheets("4-й акт")
            .Cells.Copy
            .Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        End With

Сохранение книги в формате .xlsb происходит с помощью кода

Код
ActiveWorkbook.SaveAs FileName:=stFile, FileFormat:=xlExcel12, CreateBackup:=False

где stFile — путь к файлу (M:\Акты\П\4 Àïðåëü\À¹479.xlsb).

На этом этапе пока тоже всё хорошо.

А вот сразу после сохранения обращаюсь к переменной Err. Её значение становится равным 40040. А на листе в ячейках, в которых вызывалась функция GetStringA, появляется ошибка #ЗНАЧ!/

Кто из знающих подскажет: как правильно, с помощью кода VBA, копировать листы в новую книгу, при условии, что как на листе (формулами эксель), так и в коде VBA идёт использование функций, описанных в модуле (module1.bas). При этом, код, который есть в модуле листа, далее не нужен, так как будут только сами данные, а не вычисления (формулы будут заменены на значения). Так же не нужен модуль (module1.bas).

Страницы: 1
Наверх