Excel Makrolarla PowerPoint Sunumunu Otomatik Hazırlamak (26.10.2016)
Bu uygulama için ihtiyacımız olacak programlar Excel ve Power Point olacaktır. Bilgisayarda kayıtlı Sunum Raporu.xlsm Excel dosyası ve Power Point(Master.pptx) dosyalarını kullanacağız.
Rapor Excel dosyasında Alt+F11 tuşlarına basılarak Vusial Basic Editörüne Geçilir.
Inser menüsünden Module eklenerek gelen ekrana gerekli kodlar yazılır.
Kod yazımına başlamadan önce PowerPoint dosyasına bağlantı kurmamızı sağlayacak kodlar için gerekli olacak Referanslar Tools menüsünden References sekmesinden eklenir.
Eklenmesi gereken referanslar;
Insert sekmesinden eklediğimiz modüle içerisine kodları yazmaya başlıyoruz.
Sub Send_To_PPT()
Dim activeSlide As PowerPoint.Slide
file = "C:\Users\muhammet.tek\Desktop\Makale\Power Point Bağlantı\Master.pptx"
Set pptApp = CreateObject("PowerPoint.Application")
Set pptPres = pptApp.Presentations.Open(file)
End sub
activeSlide değişkenine PowerPoint slaytı için değişkeni tanımladık ve daha önceden hazırladığımız Master adındaki Power Point dosyasının yolunu File değişkenine atadık. File olarak tanımlı olan dosyanın(Master.pptx) dosyasının açılmasını sağladık.
Kodun devamında:
pptApp.ActivePresentation.Slides.Add pptPres.Slides.Count + 1, ppLayoutText
Master Power Point dosyasında yeni Slayt eklendi.
pptApp.ActiveWindow.View.GotoSlide pptPres.Slides.Count
Yeni eklenen slayt ekrana getirildi.
Set activeSlide = pptApp.ActivePresentation.Slides(pptApp.ActivePresentation.Slides.Count)
Ekrana getirilen slayt activeSlide değişkenine atandı. Slayt ile ilgili işlemleri bu değişken adıyla gerçekleştirilecek.
activeSlide.Shapes(2).Delete
Slayttaki 2. Şekil silindi.
activeSlide.Shapes(1).TextFrame.TextRange.Text = Sheets("Karadeniz").Range(“A1”)
Şekil 1 yani Başlık alanına exceldeki A1 hücresinde yazılı olan Karadeniz Bölge yazısı yazdırıldı.
Sheets("Karadeniz").Select
Excel dosyasındaki Karadeniz sayfasının seçilmesi sağlandı.
ActiveSheet.Shapes(1).Copy
Aktif sayfadaki şekil 1 yani grafiğin seçilmesi sağlandı.
activeSlide.Shapes.PasteSpecial(ppPasteMetafilePicture).Select
Power Point’te slayt’a yapıştırıldı.
pptApp.ActiveWindow.Selection.ShapeRange.Left = 40
Soldan hizalaması yapıldı.
pptApp.ActiveWindow.Selection.ShapeRange.Top = 96
Üstten hizalaması yapıldı.
activeSlide.Shapes(3).Height = 220
activeSlide.Shapes(3).Width = 500
Yükseklik ve genişlik ayarlaması yapıldı.
activeSlide.Shapes.Range(3).Align msoAlignCenters, msoTrue
Slayt içerisindeki hizalaması yapıldı.
Kodlamanın tüm hali:
Excel dosyasındaki diğer sayfadaki raporlar içinde kodlama geliştirilirse. Hazırlanması saatlerce sürecek olana PowerPoint sunumları dakikalar hatta saniyeler içerinde hazırlanmış olur.
MUHAMMET TEK