В этой статье мы рассмотрим способ добавления в контекстное меню листа (то меню, которое появляется в качестве выпадающего списка при нажатии на лист правой кнопкой мыши) нового пункта, который будет сохранять лист как отдельный файл.

Для того, чтобы реализовать такую возможность нам нужно использовать VBA. Сначала необходимо активировать раздел разработчика (более подробно о том, как это сделать написано в этой статье). После чего мы должны получить доступ к личной книге макросов (более подробно – здесь).
В результате, в разделе Project в VBA должен появиться пункт VBAProject (PERSONAL.XLSB). С ним мы и будем работать.

Для начала создадим новый модуль в этом разделе (для этого активируйте раздел и через правую кнопку мыши выберите Insert – Module). В модуле разместите следующий код:
Sub MyComBar()
Application.CommandBars("Ply").Reset
With Application.CommandBars("Ply").Controls.Add(Type:=1, before:=5)
.OnAction = "save_sheets"
.Caption = "Сохранить лист как файл"
End With
End Sub
Sub save_sheets()
Dim CurrWb, TempWb As Window
Set CurrWb = ActiveWindow
Set TempWb = ActiveWorkbook.NewWindow
CurrWb.SelectedSheets.Copy
TempWb.Close
Application.Dialogs(xlDialogSaveAs).Show
ActiveWorkbook.Close
End Sub
В процедуре MyComBar мы добавляем новый пункт в меню листа, определяем его название и закрепляем за пунктом выполнение второй процедуры save_sheets. При сохранении листа вам будет предложено выбрать место сохранения и изменить название.
Теперь нам остается лишь сделать так, чтобы при открытии любого файла Excel процедура MyComBar выполнялась, так как по умолчанию этого пункта в Excel нет. Для этого в разделе VBAProject (PERSONAL.XLSB) перейдем в пункт ЭтаКнига, вставим следующий код в этот пункт:
Private Sub Workbook_Open()
MyComBar
End Sub
Далее, перезагружаем Excel и все изменения применятся.