Notifications
Clear all

Salvar gráficos como imagem em uma pasta

6 Posts
2 Usuários
0 Reactions
2,319 Visualizações
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Boa Tarde!

Utilizo uma macro que exporta 14 gráficos para uma pasta e depois esses gráficos são enviados por e-mail no corpo da mensagem.

Para exportar os gráficos utilizo o seguinte:

    Sheets("GERENTE").ChartObjects("Gráfico 1").Activate
    ActiveChart.Export ThisWorkbook.Path & "Temp IMG1.png"

Porem o mesmo não funciona para gráficos agrupado. Por exemplo, na figura abaixo tenho agrupado dois graficos, sendo um de dispersão e outro de rosca:

Como posso fazer para exportar esse grupo como imagem para uma pasta?

Abçs...

 
Postado : 14/05/2014 10:45 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Talvez isso lhe ajuda..

Não testado!!!!!!!!!!!

Sub AleVBA_11662()
    Dim cto As ChartObject
    Dim cht As Chart
    
   
    Set cto = Plan1.ChartObjects(1)
    
    Set cht = cto.Chart
   
    cht.Export "C:TempSuaImagem.png", "PNG"
    'Ou
    ' cht.Export "C:TempSuaImagem.jpg", "JPG"
End Sub
 
Postado : 14/05/2014 11:00 am
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Ola Alexandre!

Obrigado por tentar ajudar mas não funcionou, a macro exportou um dos graficos, sendo que eu quero exportar os grupo todo como sendo uma imagem.

OBS: Alterei o codigo para tentar exportar o grupo ao invés de apenas um grafico, mas sem sucesso:

Sub AleVBA_11662()
    Dim cto As ChartObject
    Dim cht As Chart
   
    Set cto = Plan21.ChartObjects(Array("Group 3"))

    Set cht = cto.Chart
   
    cht.Export ThisWorkbook.Path & "SuaImagem.png", "PNG"
    
End Sub
 
Postado : 14/05/2014 1:18 pm
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Ola! Consegui resolver depois de buscas em ingles!

Afim de compartilhar a solução, segue abaixo script que utilizei.

* A macro copia o range de onde esta o gráfico como imagem para o clipboard.
* Cria um Grafico em branco com os mesmos tamanhos do range
* Cola a imagem do range que estava armazenada no Clipboard dentro do grafico
* Exporta o grafico

Sub teste()

    'Set Range you want to export to file
    Dim rgExp As Range: Set rgExp = Range("I40:P52")
    
    'Copy range as picture onto Clipboard
    rgExp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
    
    'Create an empty chart with exact size of range copied
    With ActiveSheet.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, _
    Width:=rgExp.Width, Height:=rgExp.Height)
    .Name = "GRAFICO RADAR"
    .Activate
    End With
    
    'Retiro as bordas do grafico criado e deixo sem preenchimento
    ActiveSheet.Shapes("GRAFICO RADAR").Fill.Visible = msoFalse
    ActiveSheet.Shapes("GRAFICO RADAR").Line.Visible = msoFalse
    
    'Paste into chart area, export to file, delete chart.
    ActiveChart.Paste
    ActiveSheet.ChartObjects("GRAFICO RADAR").Chart.Export ThisWorkbook.Path & "SuaImagem.png"
    ActiveSheet.ChartObjects("GRAFICO RADAR").Delete

End Sub
 
Postado : 14/05/2014 2:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Necron, apesar de não utilizar muito graficos, talves muitos tambem não utilizem, eu não conhecia esta questão de "Grupos" ou Grafico agrupado, então se for possivel para deixarmos este tópico até mais claro e que possamos enteder (eu, rsrsr) melhor, colocasse um pequeno modelo já com a rotina, coloque dados ficticios, é mais para conhecimento.

Se for possível agradeço, e podemos até colocar no Tópico Biblioteca como referencia.

[]s

 
Postado : 14/05/2014 5:05 pm
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Ola Mauro!

Bom, o agrupamento de graficos é simples, utilizo na minha rotina quando preciso de um terceiro eixo horizontal. rsrs :D "Chamo isso de gambiarra"

Enfim, agrupar o gráfico exige apenas que você crie os gráficos e depois coloque um em cima do outro, lembrando que é necessário deixa-lo sem preenchimento, e após isso basta selecionar todos, clicar com o direito e selecionar a opção agrupar.

Como não sou muito bom de explicar as coisas, segue abaixo um exemplo onde eu tenho um gráfico de "ROSCA" e outro de "DISPERSÃO" sobrepondo o outro.

OBS: Deixei na planilha a macro para exportar o RANGE onde esta esse gráfico para a pasta da planilha. Não necessariamente os graficos precisam estar agrupados para ser exportado como apenas um, basta estarem dentro do mesmo range que será copiado como imagem.

Não sou muito bom para explicar, tudo que sei é por conta de varias pesquisas no google e nesse forum.

Fique a vontade para fazer o que preferir com a planilha.

Abçs

 
Postado : 15/05/2014 8:43 am