MS Excel - cria uma captura de tela de cada folha (usando script?)

1

É possível tirar screenshots de todas as planilhas no Excel (por um script, por exemplo)?

Veja este Exemplo . Eu quero de alguma forma exportar os dados do retângulo verde para o JPG (ou outro formato) e fazer isso para todas as folhas.

Eu encontrei esta solução: excel vba: para exportar várias planilhas do excel para o seu arquivo jpg designado e parece muito bom, mas há um intervalo definido Range("B5:M60") . É possível fazer isso de maneira mais dinâmica?

    
por Pepa Zapletal 24.10.2017 / 17:36

1 resposta

1

Eu modifiquei um pouco o código mencionado para fazer o seguinte.

Fazer um loop por todas as folhas

Solicite o uso do intervalo de entrada para capturar a captura de tela

Salve o Sheetname.jpg na pasta C: \ Temp. Nome do arquivo é Sheetname com extensão .jpg

Observe que isso não captura nenhum objeto incorporado, por exemplo, um Formas inseridas ou uma imagem, etc. Ele só capturará a captura de tela do intervalo de células que você inseriu para cada folha. Além disso, não existem validações rigorosas. Se você cancelar a entrada, o código resultará em um erro de tempo de execução.

O código é o seguinte. Verifique se isso atende às suas necessidades. O código original está em este SU Post

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
    
por 24.10.2017 / 17:58