1

Можно ли сделать скриншоты всех листов в Excel (например, по сценарию)?

Посмотрите на этот пример. Я хочу как-то экспортировать данные из зеленого прямоугольника в JPG (или другой формат) и сделать это для всех листов.

Я нашел это решение: Excel VBA: экспортировать несколько листов Excel в назначенный файл JPG, и это выглядит довольно хорошо, но есть установленный диапазон Range("B5:M60") . Можно ли сделать это более динамично?

1 ответ1

1

Я немного изменил упомянутый код, чтобы сделать следующее.

Цикл через все листы

Попросите использовать Диапазон ввода, чтобы сделать снимок экрана

Сохраните 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .