Notifications
Clear all

Salvar Range como imagem

15 Posts
5 Usuários
0 Reactions
10.9 K Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Segue uma Rotina para Copiar uma range de uma planilha e salva-la como um arquivo imagem,

Por julgar que possa ser util a mais pessoas, estou postando ao grupo:

Obs.: Rotina originalmente postada no grupo ms_Excel menssagem 38865- codigo adapatado por Pascal Daulton, e modificado por mim.

É possivel salvar na extensão JPG; PNG e GIF (se houver outras, ainda não conheco).

Espero que seja util

Sub Salva_Range_Como_Imagem()
'http://tech.groups.yahoo.com/group/ms_excel/message/38865
' =========================================
' Code to save selected Excel Range as Image
' adjusted by Pascal Daulton 15-Sep-2011
'Readaptado em 16-09-2011 por RLM
' =========================================
Dim sRange As Range
Dim oCht As Chart
Dim oImg As Picture
Dim sPath As String, rRange As String


sPath = ThisWorkbook.Path
'Acrescenta a barra invertida ""; se necessaria
    If Right(sPath, 1) <> "" Then
        sPath = sPath & ""
        Else
        sPath = sPath
    End If
    
    Set sRange = Application.InputBox(prompt:= _
           "Selecione o intervalo a ser copiado", _
           Title:="Lê Intervalo", Type:=8)
       If sRange.Address = "" Then
            MsgBox "Sem  informação da range"
            Exit Sub
       End If
With sRange
.CopyPicture xlScreen, xlPicture
Set oCht = ActiveSheet.ChartObjects.Add(50, 50, .Width + 5, .Height + 5).Chart
End With


With oCht
.Paste
.Shapes(1).Left = -.ChartArea.Left
.Shapes(1).Top = -.ChartArea.Top
.Parent.Width = sRange.Width
.Parent.Height = sRange.Height
.Export Filename:=sPath & "AreaSalva.gif", Filtername:="gif"
.Parent.Delete
End With
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/09/2011 11:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Umaoutra variante, meio antiga, mas ainda funciona, criada pelo Portugues JJoao :

Exportar area de uma worksheet para um Imagem - JJoão (10/2006)
http://www.jjoao.com/site2000/vba/vba049.html

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/09/2011 8:33 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro,

Site (JJoão) muito Bom, não o conhecia, obrigado pela dica.

Valeu!!!!

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2011 7:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo, o João (JJoao) foi um dos que me ajudaram quando iniciei em VBA, sempre disposto a ajudar e dar explicações nas rotinas, como eu sempre dizia a ele, apesar de ele ser Portugues, de "burro" não tinha nada, ele até achava graça e dizia que em Portugal diziam o mesmo dos Brasileiros, kkkkkkkkkk

É uma pena que ele deixou de trabalhar com VBA e Excel, se ver as datas no site dele, a mais recente são de 2007, ainda converso com ele via MSN, ele agora está na área de webdesigne, mas não se nega a me dar um auxilio quando necessito, um grande amigo fora do Brasil, muito gente boa.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 19/09/2011 7:24 pm
(@mau_mau)
Posts: 3
New Member
 

Olá Pessoal!!!!

Adorei o código, porém, como posso fazê-lo sem utilização da caixa de mensagem, apenas declarando a range "A1:X43"?

Abraço!

 
Postado : 02/04/2014 3:04 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Substitua o trecho

'Prompt para selecionar a range a ser "exportada"
    Set sRange = Application.InputBox(prompt:= _
           "Selecione o intervalo a ser copiado", _
          Title:="Lê Intervalo", Type:=8)
       If sRange.Address = "" Then
            MsgBox "Sem  informação da range"
            Exit Sub
       End If

Por :

Set sRange = Range("A1:X43")

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 03/04/2014 6:35 am
(@mau_mau)
Posts: 3
New Member
 

Muito obrigado!!!!!

PROBLEMA RESOLVIDO.

 
Postado : 04/04/2014 2:09 pm
(@amancio)
Posts: 4
New Member
 

Desculpa se eu estiver no locar errado,

só queria que vc me dissesse como faço para que o arquivo quando for salvo, ele ser nomeando automaticamente
de acordo com o que está escrito em uma determinada celular

Pq no comando que vc fez, ele sempre salva com o mesmo nome, ai o arquivo velho é substitui pelo arquivo novo
e eu preciso de todos os arquivos que criar.

Desde Já Agradeço sua atenção.
E novamente desculpa se eu não coloquei a pergunta no local certo.

 
Postado : 31/03/2016 1:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Talvez assim:

Sub Salva_Range_Como_Imagem()
'http://tech.groups.yahoo.com/group/ms_excel/message/38865
' =========================================
' Code to save selected Excel Range as Image
' adjusted by Pascal Daulton 15-Sep-2011
'Readaptado em 16-09-2011 por RLM
' =========================================
Dim sRange As Range
Dim oCht As Chart
Dim oImg As Picture
Dim sPath As String

sPath = ThisWorkbook.Path
'Acrescenta a barra invertida ""; se necessaria
    If Right(sPath, 1) <> "" Then
        sPath = sPath & ""
        Else
        sPath = sPath
    End If
'Acrescenta nome arquivo na range F2
sPath = sPath & Sheets("Table 1").Range("F2").Value & ".gif"
    
    Set sRange = Application.InputBox(prompt:= _
           "Selecione o intervalo a ser copiado", _
           Title:="Lê Intervalo", Type:=8)
       If sRange.Address = "" Then
            MsgBox "Sem  informação da range"
            Exit Sub
       End If
With sRange
.CopyPicture xlScreen, xlPicture
Set oCht = ActiveSheet.ChartObjects.Add(50, 50, .Width + 5, .Height + 5).Chart
End With


With oCht
.Paste
.Shapes(1).Left = -.ChartArea.Left
.Shapes(1).Top = -.ChartArea.Top
.Parent.Width = sRange.Width
.Parent.Height = sRange.Height
.Export Filename:=sPath, Filtername:="gif"
.Parent.Delete
End With
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 31/03/2016 2:46 pm
(@amancio)
Posts: 4
New Member
 

Bom dia

Esta dado erro de tempo de execução '9'
Subscrito fora do intervalo

A celular que estou usando é a o16
e a tabela é a Plan 1

 
Postado : 01/04/2016 6:31 am
(@amancio)
Posts: 4
New Member
 

Reinado Cara Deu certo,

Foi só encostar o numero 1 na palavra plan (Plan1) como o tabela 1 - estava separado eu tb separei o plan
cara show de bola vc é a referência em Vba show de Bola, vou estourar de clicar no positivo, Obrigado Novamente.

 
Postado : 01/04/2016 6:39 am
(@amancio)
Posts: 4
New Member
 

Boa tarde,

Reinado, creio que vc lembra de mim, sou aquele rapaz que lhe pediu para nomear o arquivo com um valor de uma celular
ai tá dando certo.
vou te perguntar para ver se vc pode me ajudar.
eu crio o arquivo vou lá nas pasta e confiro se o arquivo foi criado,
ai visualizando o arquivo clico com o outro botão para enviar por email, entende?
não tem um comando no Vba, que consiga tb anexar já esse arquivo no email?

vamos lá, preencho o arquivo, ai quando clicar no botão já abrir a caixa de email (no caso o outlook que já está configurado na minha maquina) já com esse arquivo anexo, só para eu colocar o endereço do destinatário.
e clicar em enviar, vc acha que tem uma forma pelo vba?

se tiver me diz ai como eu faço,

pq ai em um mesmo botão, já criava o arquivo e já anexa no email.

Desde já te agradeço

 
Postado : 08/04/2016 11:43 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom Dia.

Meio existe, porem me desculpe mas vou ficar lhe devendo; por uma decisão/motivo pessoal não estou mais "mexendo" com esse tipo de rotina.
Contudo, de uma pesquisada na base de dados do planilhando (Na barra verde superior, botão Pesquisar) por exemplo: "envio de Email"; diversos tópicos que lhe auxiliarão

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/04/2016 6:49 am
(@klebergeo)
Posts: 1
New Member
 

Olá boa tarde. Queria saber se tem como selecionar para salvar como jpg em uma lista variável. Um dos meus intervalos, as linhas podem variar!!! Grato.

 
Postado : 18/11/2016 2:23 pm
(@caiocito)
Posts: 37
Eminent Member
 

Pessoal boa tarde, eu consegui fazer a macro para salvar as imagens do jeito que eu queria, porém agora atualizei o office para o 2016 e o código parou de funcionar. Alguem pode me ajudar? Estou desesperado aqui, pois dependo muito das minhas macros.

deu erro na seguinte linha:

.Shapes(1).Left = -.ChartArea.Left

 
Postado : 16/05/2017 2:57 pm