Você está na página 1de 8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

Home
Cursos
Downloads
Servios
TiresuaDvida
ConversordeFuno/FrmuladoExcel(InglsxPortugus)
Loja
Contato

http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

1/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

Indiqueesteartigoparaseusamigos.

Seunome
Seuemail
Amigosindicados
1

Nome

Email

2
3

Suamensagem

Enviar

MacroVBAparacriarrelatrioougrficodeExcelem
PDFePPT
PorReinaldoCoral|PerfildoautornoGooglePlus
Compartilhe:

Tweet

http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

2/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

Imprimir

Eapessoal!TudoExcelentecomvocs?
Eujestavacomsaudadesdeescreverparameusqueridosleitores.Mas,permitamecompartilharcomvocsalgoqueme
alegrabastante:estouconcluindominhagraduaoemCinciasdaComputaonestefinaldeano!!!
Issomuitobom.Mefazlembrardetodaaminhatrajetriaparaalcanaressameta,ondehouverambonsmomentoseoutros
nemtanto,masquevalorizaramimensamenteessaconquista.
claroquecomessacorreriatoda,tivequemeausentarumpoucoaquidoblog,poisconsomemuitotempo,vocsnem
imaginam!!!Mas,agora,minhacabeajestcheiadeidiasnovaseaguardemnovidadesbemlegais!!!

Enfim,vamosaoqueinteressa,nomesmo?!!

Recentemente,recebideumleitor,umpedidodeajudaeumasugestoarespeitodeumamacroparaautomatizaracriaode
grficosdoExceldiretamenteparaoPowerPoint.Anecessidadedoprojetoseriagerarumgrficoparacadasituaoemuma
apresentaoindividualdoPowerPoint,salvandoemarquivosdistintosnumapastaespecficadocomputador.Jmostreiaqui
noblogcomosalvarcadaaba(planilha)emarquivosseparadosnumapastadoseucomputador,masnessecasoagoraensinarei
comosalvarcadagrficoemppt(PowerPoint).Edebnus,voumostrarcomosalvaremPDF(AdobeAcrobat)tambm!
Aproveitemotutorial!

Introduo
Bem,partireidoprincpioquevocjtenhasuapastadetrabalhodoExcelcomsuasplanilhascontendoseusgrficosj
http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

3/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

criados.Noserobjetivodestetutorialensinarcomocriarosgrficos,abordeiissoemoutroartigo.
comumcolocarmosgrficoscomoobjetosdentrodeumaplanilha,pormbomsaberquetambmexisteapossibilidadede
inserirumgrficocomoumaabaespecficaeindependentenapastadetrabalho.Estoufalandoissoporqueamaneiracomo
faremosrefernciaparacadacasodistingueseumpouco,ok!
AprimeiracoisaquefaremosparaconstruiramacroadicionararefernciaabibliotecadoPowerPointaoprojeto.Lembram
comofazerisso?
AbramoeditorVBA(ALT+F11)ecliquememFerramentas>Referncias

ConstruindoaMacroparaexportarosgrficos
AdicionemumMduloaoprojetoeincluamocdigoaseguir.Aprincpiomostrareiapenasaprimeiraparte,quetransporta
cadagrficoparaumanicaapresentaoPowerPointouarquivoPDF.
OptionExplicit
'Vocprecisaincluirareferncia(Ferramentas|Referncias)paraabibliotecaMicrosoftPowerPointObjectLibrary
SubCriarPPT()
OnErrorGoToErr_Handler
CallCriarArquivo("PPT")
ExitSub
Err_Handler:
MsgBoxErr.Description,vbExclamation
EndSub
SubCriarPDF()
OnErrorGoToErr_Handler
CallCriarArquivo("PDF")
ExitSub
Err_Handler:
MsgBoxErr.Description,vbExclamation
EndSub
SubCriarArquivo(ByValsSalvarTipoAsString)
DimpptAppAsPowerPoint.Application
DimpptPresAsPowerPoint.Presentation
DimpptSldAsPowerPoint.Slide
DimshComGrafAsWorksheet
DimobjChartObjectAsChartObject
DimobjChartAsChart
DimiContadorSlideAsLong
DimsSalvarComoAsString
DimiTipoSaveAsInteger
'CriaoPowerpoint
SetpptApp=NewPowerPoint.Application
http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

4/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

pptApp.Visible=msoTrue
'CriaonovoarquivodoPowerPoint,ouseja,aApresentao
SetpptPres=pptApp.Presentations.Add
SetpptPres=pptApp.ActivePresentation
'Defineomododevisualizao
'pptApp.ActiveWindow.ViewType=ppViewSlide
iContadorSlide=0
sSalvarComo=ThisWorkbook.Path&"\ExemploExportarGrafico"
SelectCasesSalvarTipo
Case"PDF"
iTipoSave=ppSaveAsPDF
CaseElse'"PPT"
iTipoSave=ppSaveAsDefault
EndSelect
'=================================================================================
'===Copiaosgrficosdasplanilhas===
'=================================================================================
'Defineaplanilhaquecontmosgrficos
SetshComGraf=ThisWorkbook.Worksheets("Plan1")
'Verificaseexistegrficosparacopiar
IfshComGraf.ChartObjects.Count>0Then
ForEachobjChartObjectInshComGraf.ChartObjects
iContadorSlide=iContadorSlide+1
SetobjChart=objChartObject.Chart
SetpptSld=pptPres.Slides.Add(iContadorSlide,12)
pptApp.ActiveWindow.View.GotoSlidepptSld.SlideIndex
WithobjChart
'Copiaogrficocomofigura
objChart.CopyPicturexlScreen,xlBitmap,xlScreen
'AquifeitaacpiadogrficonoSlide
pptSld.Shapes.Paste.Select
pptApp.ActiveWindow.Selection.ShapeRange.AlignmsoAlignCenters,msoTrue
pptApp.ActiveWindow.Selection.ShapeRange.AlignmsoAlignMiddles,msoTrue
EndWith
NextobjChartObject
EndIf
'=================================================================================
'=================================================================================
'===CopiaosgrficoscriadoscomoCharts===
'=================================================================================
'BuscaosgrficoscriadosemplanilhasseparadasdotipoChart
ForEachobjChartInActiveWorkbook.Charts
iContadorSlide=iContadorSlide+1
SetpptSld=pptPres.Slides.Add(iContadorSlide,12)
pptApp.ActiveWindow.View.GotoSlidepptSld.SlideIndex
WithobjChart
'Copiaogrficocomofigura
.CopyPicturexlScreen,xlBitmap,xlScreen
'AquifeitaacpiadogrficonoSlide
pptSld.Shapes.Paste.Select
pptApp.ActiveWindow.Selection.ShapeRange.AlignmsoAlignCenters,msoTrue
pptApp.ActiveWindow.Selection.ShapeRange.AlignmsoAlignMiddles,msoTrue
EndWith
NextobjChart
'=================================================================================
'SalvaapresentaoPowerPointapplication
pptPres.SaveAssSalvarComo,iTipoSave
'EncerraaplicativoPowerPoint
pptPres.Close
pptApp.Quit
shComGraf.Range("A1").Select
SetshComGraf=Nothing
SetobjChart=Nothing
SetpptSld=Nothing
SetpptPres=Nothing
SetpptApp=Nothing
http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

5/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

MsgBox"Processoconcludo",vbInformation
EndSub

Explicandoalgunspontosdocdigo
Amaiorpartedocdigojestcomentadoneleprprio.Voudestacarapenasalgumasinformaesimportantes.
Apartirdalinha60,olooppercorretodososgrficosqueexistamnaplanilha,ocopiamecolamcomofiguranoslidequefoi
adicionadoapresentao.PercebamqueacadaiteraodolaoForNext,umnovoslideadicionado.
Parafazeraexportaodosgrficosindependentes,apartirdalinha87,olooppercorretodososobjetosdotipoChart
presentesnapastadetrabalho(Workbook).Ento,dentrodolaooprocessodetransportesimilar.

ParaexecutaramacroschamarasrotinasCriarPPT()ouCriarPDF(),paragerarosgrficosemapresentaes
PowerPointouarquivosemPDF,respectivamente.
Dependendodotamanhoouquantidadedegrficos,oprocessopodedemorarumpouco,claroqueaindasim,serbemmais
rpidodoquefazerissomanualmente!!!VivaoVBA!Enquantoelefaztudoisso,vocspodemtomarumcafezinho,quetal?

Criandoamacroquegeraapresentaesindividuaisparacadagrfico
Essafuncionalidademuitotilparaocasodesuaplanilhapossuirgrficosdinmicos.Umasituaoemquepodeocorrerisso
,porexemplo,numalistacomdiversasempresasouvendedores.
Paragerarumgrficodeposioparacadaumdosenvolvidosseriainteressantecriarrelatriosindividuaisparaserem,por
exemplo,enviadosporemailparaodestinatriocorrespondente.Falandonisso,daatpravocsmesclaremessamacrocom
outraqueensineiaquisobrecomoenviaremaildiretamentedoExcel.)
Pensandonisso,vocspodemdesenvolveraseguintemacro.Incluamnomesmomdulodamacroanterior.
SubCriarUmPPT_PorEmpresa()
OnErrorGoToErr_Handler
CallCriarUmArquivo_PorEmpresa("PPT")
ExitSub
Err_Handler:
MsgBoxErr.Description,vbExclamation
EndSub
SubCriarUmPDF_PorEmpresa()
OnErrorGoToErr_Handler
CallCriarUmArquivo_PorEmpresa("PDF")
ExitSub
Err_Handler:
MsgBoxErr.Description,vbExclamation
EndSub
SubCriarUmArquivo_PorEmpresa(ByValsSalvarTipoAsString)
DimpptAppAsPowerPoint.Application
DimpptPresAsPowerPoint.Presentation
DimpptSldAsPowerPoint.Slide
DimshComGrafAsWorksheet
DimobjChartObjectAsChartObject
DimobjChartAsChart
DimsSalvarComoAsString
DimrngAsRange
DimrngIntervaloAsRange
DimiContadorSlideAsLong
DimiTipoSaveAsInteger
OnErrorGoToErr_Handler
'CriaoPowerpoint
SetpptApp=NewPowerPoint.Application
http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

6/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

pptApp.Visible=msoTrue
'Defineaplanilhaquecontmosgrficos
SetshComGraf=ThisWorkbook.Worksheets("GrafIndividuais")
'Defineorangequecontmositensparagerarosrelatriosindividuais
SetrngIntervalo=shComGraf.Range("C6:C8")
SelectCasesSalvarTipo
Case"PDF"
iTipoSave=ppSaveAsPDF
CaseElse'"PPT"
iTipoSave=ppSaveAsDefault
EndSelect
ForEachrngInrngIntervalo
'Trocaaempresaparaatualizarogrfico
rng.Worksheet.Range("H5").Value=rng.Value
iContadorSlide=0
sSalvarComo=ThisWorkbook.Path&"\ExemploExportarGraficoIndividual_"&rng.Value
'CriaonovoarquivodoPowerPoint,ouseja,aApresentao
SetpptPres=pptApp.Presentations.Add
SetpptPres=pptApp.ActivePresentation
IfshComGraf.ChartObjects.Count>0Then
ForEachobjChartObjectInshComGraf.ChartObjects
iContadorSlide=iContadorSlide+1
SetobjChart=objChartObject.Chart
SetpptSld=pptPres.Slides.Add(iContadorSlide,12)
pptApp.ActiveWindow.View.GotoSlidepptSld.SlideIndex
WithobjChart
'Copiaogrficocomofigura
objChart.CopyPicturexlScreen,xlBitmap,xlScreen
'AquifeitaacpiadogrficonoSlide
pptSld.Shapes.Paste.Select
pptApp.ActiveWindow.Selection.ShapeRange.AlignmsoAlignCenters,msoTrue
pptApp.ActiveWindow.Selection.ShapeRange.AlignmsoAlignMiddles,msoTrue
EndWith
NextobjChartObject
EndIf
'SalvaapresentaoPowerPointapplication
pptPres.SaveAssSalvarComo,iTipoSave
'Fechaoarquivoppt
pptPres.Close
Nextrng
'EncerraaplicativoPowerPoint
pptApp.Quit
shComGraf.Range("A1").Select
SetshComGraf=Nothing
SetobjChart=Nothing
SetpptSld=Nothing
SetpptPres=Nothing
SetpptApp=Nothing
MsgBox"Processoconcludo",vbInformation
ExitSub
Err_Handler:
MsgBoxErr.Description,vbExclamation
EndSub

Explicandoalgunspontosdocdigo
Oprocessonomudamuito,oquediferenciadamacroanteriorqueoloopmaiorfeitoparapercorrercadaitemdalista,no
casodoexemplo,percorretodasasempresasdalistacomoobjetivodecriarumarquivoparacadaempresaesalvlonuma
pastaespecficadocomputador.
ParaexecutaramacroschamarasrotinasCriarUmPPT_PorEmpresa()ouCriarUmPDF_PorEmpresa(),parageraros
grficosemapresentaesPowerPointouarquivosemPDF,respectivamente.
http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

7/8

26/05/2015

MacroVBAparacriarrelatrioougrficodeExcelemPDFePPT:ExceldoSeuJeito

Bom,entoissopessoal.
Esperoquetenhagostado.Estoudeixandooarquivocomamacroparavocsbaixarem,ok.
Ataprxima!

CursodeExcelGRTISCliqueaqui!
Cliqueparabaixaroarquivodeexemplo
Antesdeefetuarodownloaddoarquivodeexemplo,convidovocasocializarconosco.
Escolhaumadasopesabaixo.Seguirnotwitter,assinarnossaNewsletter...
Issonosajudanadivulgaodositeetepermiteficarsempreatualizadodasnovidades.Ficomuitogratopelasuacolaborao.
Follow@exceldoseujeito
Digiteseuemail:

Cadastrar

Baixaranexo

Gostoudesteartigo?Compartilhecomseusamigos!
Tweet

Siga@exceldoseujeito

Recebanovosartigosporemail(grtis):
Digiteseuemail...
Assinar
Vocreceberumemailparaativarocadastro,ok!

Artigopublicadoem:Dicas,VBA
Vejatodosospostsquefalamde:Chart,Copiar,Copy,Excel,Excel2010,excelavanado,exportar,extrair,For...Next,
Grfico,Macro,PDF,PowerPoint,relatrio,Salvar,Tabeladinmica,tutorial,VBA,viacdigo

Voctambmgostardeler:
DicasdeExcel#1Macroparaexcluirlinhasnaquantidadepedida
Criarumbotonabarradeferramentasparachamarsuasmacros

http://www.exceldoseujeito.com.br/2013/10/24/macrovbaparacriarrelatorioougraficodeexcelempdfeppt/

8/8