Работаю в сметной программе РИК, у неё есть шаблон вывода в формат .xls, в котором задаются параметры страницы. Не всегда данное решение гибко, и до нужного вида файл доводится руками, средствами MS Excel. Проблема в том, что параметры страницы не сохраняются после изменения в excel, и после повторного открытия всё сбрасывается на параметры заданные в РИК. Нашёл один выход, после задания нужных параметров, пересохраняю файл в формат .xlsx, но это ещё один лишний шаг в длинной цепочке, хотелось бы его исключить. Файл прилагаю.
abricos29, Откройте файл, нажмите Alt + F11 и удалите модуль с макросами или только первый макрос Sub Auto_Open() ( именно он отвечает за параметры страницы ) и сохраните.
Собрал такой макрос, может кому пригодится, блок удаления взят с сайта участника The Prist Код удаления модулей. В моем случае все вспомогательные данные для макроса располагаются на нескольких листах начиная со второго, удаление которых реализовано в макросе, предварительно рвем связи с удаляемыми листами.
Код
Sub Delete_Macroses()
'________________________________разрыв связей на каждом листе___________________________
Dim wsSh As Worksheet
For Each wsSh In Sheets
wsSh.UsedRange.Value = wsSh.UsedRange.Value
Next wsSh
'____________________________Удаление всех листов начиная со второго_____________________
On Error Resume Next ' пропустить все ошибки
Do While 1: Sheets(2).Delete: Loop
'____________________________Блок удаления всех модулей с макросами______________________
Dim oVBComponent As Object, lCountLines As Long
'Проверяем, защищен проект или нет
If ActiveWorkbook.VBProject.Protection = 1 Then
MsgBox "VBProject выбранной книги защищён." & vbCrLf & _
" Компоненты не будут удалены.", vbExclamation, "Отмена выполнения"
Exit Sub
End If
For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents
On Error Resume Next
With oVBComponent
Select Case .Type
Case 1 'Модули
.Collection.Remove oVBComponent
Case 2 'Модули Класса
.Collection.Remove oVBComponent
Case 3 'Формы
.Collection.Remove oVBComponent
Case 100 'ЭтаКнига, Листы
lCountLines = .CodeModule.CountOfLines
.CodeModule.DeleteLines 1, lCountLines
End Select
End With
Next
Set oVBComponent = Nothing
'________________________________________________________________________________________
MsgBox "Готово!", vbOKOnly, "Очиститель модулей"
End Sub