No tutorial de hoje vamos ver mais uma daquelas dicas que mudam o modo como usamos o Excel. Vamos aprender a salvar uma seleção dentro de uma planilha como imagem.

A aula de hoje pode ser feito com ou sem VBA. Mostraremos os 2 métodos e você escolhe qual deseja. No primeiro deles vamos usar um pequeno auxiliar, no caso o Paint que tenho certeza que está instalado no seu PC. Mas se preferir pode ser qualquer outro programa de manipulação de imagem, como Photoshop ou Gimp. No segundo método não precisa de nada disso.

Sem VBA

No exemplo vamos supor que estamos trabalhando com a seguinte planilha:

Agora queremos salvar esta planilha e estes dados no formato JPG. Primeiramente vamos selecionar o intervalo que desejamos salvar como imagem. Selecione tudo e na guia "Página Inicial", grupo "Área de Transferência" clique na flechinha ao lado de "Copiar" e então em "Copiar como Imagem..."

Uma nova janelinha será aberta. Selecione as informações como deseja e dê um Ok.

Agora abra o Paint e aperte Ctrl + V. Depois clique no ícone de disquete lá em cima e salve no formato que desejar.

Com VBA

Como você já sabe vamos abrir a janela de edição de códigos com o atalho alt + F11. Após um duplo clique em "EstaPastaDeTrabalho" cole o seguinte código

Sub ExportarAreaParaJPG()

Dim tmpSheet As Worksheet
Dim tmpChart As Chart
Dim tmpImg As Object
Dim img As String

On Error GoTo erro

Selection.CopyPicture Appearance:=xlPrinter, Format:=xlPicture

Application.ScreenUpdating = False
  Set tmpSheet = Worksheets.Add
  Charts.Add
  ActiveChart.Location Where:=xlLocationAsObject, Name:=tmpSheet.Name
  Set tmpChart = ActiveChart
  With tmpChart
    .Paste
    Set tmpImg = Selection
    With .Parent
      .Height = 300
      .Width = 300
    End With
  End With

img = ThisWorkbook.Path & _
      "imagem_" & Format(Now, "yyyymmdd_hhmmss") & ".jpg"

tmpChart.Export Filename:=img, FilterName:="jpg"

Application.DisplayAlerts = False
tmpSheet.Delete
Application.DisplayAlerts = True

Application.ScreenUpdating = True
  MsgBox "Imagem exportada para o ficheiro:" & img, _
         vbInformation, _
         "Exportar para JPG"
GoTo fim

erro:
MsgBox "Erro: " & Err.Description, _
vbCritical, _
"Erro: " & Err.Number

fim:
Set tmpSheet = Nothing
Set tmpChart = Nothing
Set tmpImg = Nothing

End Sub

Repare que você terá de definir o tamanho da imagem a ser salva, ok? No exemplo acima definimos como 300 tanto de altura (Height) como largura (Width).

O código foi adaptado do site do usuário português JJoão.

O processo de salvamento também pede que você selecione a área a ser salva como imagem. Execute a macro e você verá uma imagem confirmando a operação. O destino de salvamento da imagem é o mesmo de onde está a planilha.

Até a próxima