Я немного изменил упомянутый код, чтобы сделать следующее.
Цикл через все листы
Попросите использовать Диапазон ввода, чтобы сделать снимок экрана
Сохраните Sheetname.jpg в папке C:\Temp. Имя файла - имя листа с расширением .jpg
Обратите внимание, что это не будет захватывать любые встроенные объекты, например, Inserted Shapes, Picture и т.д. Он будет захватывать только скриншот диапазона ячеек, который вы вводите для каждого листа. Более того, никаких строгих проверок не существует. Если вы просто отмените ввод, код приведет к ошибке времени выполнения.
Код выглядит следующим образом. Проверьте, соответствует ли это вашему требованию. Оригинальный код находится в этом посте SU
Sub exportpic()
Dim WS As Worksheet
Dim rgExp As Range
Dim CH As ChartObject
For Each WS In ThisWorkbook.Sheets
WS.Activate
Set rgExp = Application.InputBox(prompt:="Select Input Range", Type:=8)
rgExp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
Set CH = WS.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, Width:=rgExp.Width, Height:=rgExp.Height)
CH.Chart.ChartArea.Select
CH.Chart.Paste
CH.Chart.Export "C:\Temp\" & WS.Name & ".jpg"
CH.Delete
Next WS
End Sub