Bu, VBA (Uygulamalar için Visual Basic) Makrolarını kullanarak PowerPoint'i otomatikleştirmeye yönelik eksiksiz bir kılavuzdur. Aşağıda birçok faydalı örnek bulacaksınız.
VBA PDF (Ücretsiz İndirmeler)
Ücretsiz Microsoft PowerPoint VBA Eğitimimizi indirin! Veya diğer Office Programları için VBA Eğitimleri!
İndirmek
PowerPoint VBA (Makrolar) Eğitimi
Makro Etkin Sunum Olarak Kaydet
VBA kodlu Sunum, "Farklı Kaydedildi" olmalıdır PowerPoint Makro Etkin Sunum (*.pptm)
Şeritte "Geliştirici" Sekmesini Etkinleştir
VBA kodu oluşturmadan önce Şeritte Geliştirici sekmesini etkinleştirmelisiniz. Bunu yapmak için Dosya -> Seçenekler'i seçin, ardından 'Şeridi Özelleştir'i tıklayın ve sağ bölmedeki 'Geliştirici' sekmesinin yanındaki kutuyu işaretleyin.
PowerPoint Makrosu Oluşturun
Bu, bir PowerPoint VBA Makrosunun basit bir örneğidir:
1234567891011 | Alt SavePresentationAsPDF()Dize Olarak Dim pptNamePDF Adını Dize Olarak KarartPowerPoint'i PDF olarak kaydetpptName = ActivePresentation.FullName' Addaki PowerPoint dosya uzantısını PDF olarak değiştirinPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Alt Bitiş |
Aktif sunumu PDF olarak kaydeder. Her kod satırı aşağıdakileri yapar:
- PowerPoint adı ve PDF adı için değişkenler oluşturur
- Etkin sunum adını pptName değişkenine atar
- Tam PDF adını oluşturur
- Sunuyu PDF olarak kaydeder
PowerPoint Uygulaması
Bir PowerPoint Sunusu içinde VBA kodu çalışırken, PowerPoint Uygulaması varsayılan uygulamadır ve açıkça referans verilmeden değiştirilebilir. Yeni Sunu Oluştur
Bir sunum oluşturmak için PowerPoint uygulamasının Ekle yöntemini kullanın.
123 | Uygulama.Sunumlar.Ekle' veya açık referans olmadanSunumlar.Ekle |
Yeni Sunu Aç
Yeni ve boş bir sunu açmak için Application.Presentations koleksiyonunun Add yöntemini kullanın.
1 | Sunumlar.Ekle |
Mevcut Bir Sunuyu Açma
Halihazırda oluşturduğunuz bir sunumu açmak için Application.Presentations koleksiyonunun Open yöntemini kullanın.
1 | Presentations.Open ("Sunumum.pptx") |
Yukarıdaki kod, sunumun, kodu içeren PowerPoint Sunusu ile aynı dizinde olduğunu varsayar.
Aç ve Değişkene Ata
Açtığınız sunumu bir değişkene atamalısınız, böylece onu gereksinimlerinize göre değiştirebilirsiniz.
12 | Dim ppt As PresentationSet ppt = Presentations.Open("Sunum.pptx") |
Aktif Sunuma Bakın
VBA kodu yürütüldüğünde GUI'de etkin olan Sunumu değiştirmek için ActivePrentation referansını kullanın.
12 | ' ActivePresentation'ın adını Anında Pencereye yazdırınDebug.Print ActivePresentation.Name |
Mevcut Sunumu Kaydet
Aşağıdaki ifade, daha önce kaydedilmişse Aktif Sunumu kaydedecektir. Kaydedilmemişse, 'Farklı Kaydet' iletişim kutusuyla istenir.
1 | AktifSunum.Kaydet |
Mevcut Sunumu Kapat
Aşağıdaki ifade, son düzenlemeden sonra kaydedilmemiş olsa bile Aktif Sunumu kapatacaktır.
1 | ActivePresentation.Kapat |
Faydalı Referanslar
Mevcut Sunumu (ada göre) Değişkene Ata
12 | MyPresentationByName Sunum Olarak KarartmyPresentationByName = Application.Presentations("Sunum") olarak ayarlayın |
Değişkene Aktif Slayt Ata
12 | Dim currentSlide As SlidecurrentSlide = Application.ActiveWindow.View.Slide olarak ayarlayın |
Slaytı Dizine göre Değişkene atayın
12 | MySlide'ı Slayt Olarak KarartmySlide = ActivePresentation.Slides(11) olarak ayarlayın |
Slayt Sayısı
12 | Dim slideCount As LongslideCount = ActivePresentation.Slides.Count |
Slayt Dizini Al Geçerli Slayt Numarası
12 | Slayt Olarak AkımSlideIndex'i karartcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex |
Slayt Gösterisinin Sonuna Boş Bir Slayt Ekle
1234567 | Dim slideCount As LongSlayt olarak newSlide'ı karartslideCount = ActivePresentation.Slides.CountnewSlide = ActivePresentation.Slides.Add(slideCount + 1, 12) ayarla' veya ppLayoutBlank = 12 olaraknewSlide = ActivePresentation.Slides.Add(slideCount + 1, ppLayoutBlank) olarak ayarlayın |
Geçerli slayttan sonra slayt ekle
12345 | Slayt Olarak NewSlide DimCurrentSlideIndex'i Tamsayı olarak karartcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexnewSlide = ActivePresentation.Slides.Add(currentSlideIndex, ppLayoutBlank) olarak ayarlayın |
Slayt Sil
1234 | CurrentSlideIndex'i Tamsayı olarak karartcurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides(currentSlideIndex).Delete |
Belirli Bir Slayda Git
12 | ' Bu sizi 4 numaralı slayta götürecekApplication.ActiveWindow.View.GotoSlide (4) |
Slaytı Taşı
Bir slaytı eski konumundan yeni konumuna taşıyabilirsiniz.
123456 | ' 3. slayttan ilk slayda geçOldPosition'ı tamsayı olarak karart, newPosition'ı tamsayı olarak kararteskiKonum = 3yeniKonum = 1ActivePresentation.Slides(oldPosition).Pos'a Taşı:=newPosition |
Tüm Slaytlarda Döngü
Her slaytla bir şeyler yapabilir veya birkaç slayt bulmak için tüm slaytları gözden geçirebilir ve kodu kullanarak bir şeyler yapabilirsiniz;
123456 | MySlide'ı Slayt Olarak KarartınActivePresentation.Slides'deki Her mySlide için'mySlide' değişkeninde belirtilen geçerli slaytla bir şeyler yapın' Debug.Print mySlide.NameSonraki slayt |
Aktif Slaytın Tüm Şekillerinde Döngü
PowerPoint'in gücü, 'Şekiller' kullanılarak gerçekleştirilebilir. Aşağıdaki kod, geçerli slayttaki tüm şekilleri istediğiniz gibi değiştirebilmeniz için döngüye girer;
123456789 | Slayt olarak Slide'ı karartŞekil olarak shp'yi karartcurrentSlide = Application.ActiveWindow.View.Slide olarak ayarlayınCurrentSlide.Shapes'teki Her shp için'Shp' değişkeninde belirtilen mevcut şekille bir şeyler yapın' Örneğin, Anında Pencerede şeklin adını yazdırınDebug.Print shp.NameSonraki sayfa |
Tüm Slaytlardaki Tüm Şekillerde Döngü
Tüm slaytlar arasında geçiş yapmak için bir döngü ekleyerek sunumdaki tüm şekiller arasında geçiş yapabilirsiniz.
123456789 | Slayt olarak Slide'ı karartŞekil olarak shp'yi karartActivePresentation.Slides'deki Her CurrentSlide İçinCurrentSlide.Shapes'teki Her shp için'Shp' değişkeninde belirtilen mevcut şekille bir şeyler yapınDebug.Print shp.NameSonraki sayfaSonraki akımSlayt |
Aktif Slaytın Tüm Metin Kutularında Döngü
Metin Kutuları, PowerPoint sunumlarında en sık kullanılan Şekildir. 'Shape Type' için bir kontrol ekleyerek tüm Metin Kutuları arasında dolaşabilirsiniz. TexBox'lar, VBA sabiti msoTextBox olarak tanımlanan şekil türüne sahiptir (sabitin sayısal değeri 17'dir)
1234567891011 | Slayt olarak Slide'ı karartŞekil olarak shp'yi karartcurrentSlide = Application.ActiveWindow.View.Slide olarak ayarlayınCurrentSlide.Shapes'teki Her shp için' Şekil türünün msoTextBox olup olmadığını kontrol edinshp.Type = 17 ise ' msoTextBox = 17'TextBox'taki metni yazdırınDebug.Print shp.TextFrame2.TextRange.TextBitirSonraki sayfa |
Tüm Slaytlardaki Tüm Metin Kutularında Döngü
Yine, tüm slaytlardan geçmek için bir döngü ekleyerek sunumdaki tüm metin kutuları arasında dolaşabilirsiniz.
1234567891011 | Dim currentSlide as Slide Dim shp as ShapeActivePresentation.Slides'deki Her CurrentSlide İçinCurrentSlide.Shapes'teki Her shp için' Şekil türünün msoTextBox olup olmadığını kontrol edinshp.Type = 17 ise ' msoTextBox = 17'Shp' değişkeninde belirtilen TextBox ile bir şeyler yapınDebug.Print shp.TextFrame2.TextRange.TextBitirSonraki sayfaSonraki akımSlayt |
Seçili slaytları yeni PPT Sunumuna Kopyala
Belirli slaytları yeni bir sunuma kopyalamak için önce mevcut sunumda istediğiniz slaytları seçin ve ardından aşağıdaki kodu çalıştırın;
123456789101112131415161718 | Sunu olarak mevcut sunumu karartSlayt olarak Slide'ı karartSunu olarak yeniSunum karart' Mevcut sunuma referansı kaydetcurrentPresentation = Application.ActivePresentation olarak ayarlayın' Referansı geçerli slayta kaydetcurrentSlide = Application.ActiveWindow.View.Slide olarak ayarlayın' Yeni Sunum ekle ve bir referansa kaydetNewPresentation = Application.Presentations.Add olarak ayarlayın' Seçili slaytları kopyalaSeçim.Kopyala' Yeni Sunuma yapıştırınYeniSunum.Slaytlar.Yapıştır |
Etkin Slaydı Etkin Sunumun Sonuna Kopyala
12345 | ' Geçerli slaydı kopyalaApplication.ActiveWindow.View.Slide.Copy'Sonuna yapıştırActivePresentation.Slides.Paste |
Yararlı PowerPoint Makro Örnekleri
İşte görevlerin nasıl yapılacağını gösteren bazı yararlı makro örnekleri. Bunlar ayrıca yukarıda açıklanan kavramları da gösterecektir.
Slayt Gösterisi Sırasında Slayt Değiştir
1234567891011 | Alt ChangeSlideSlideSlideShow()SlideIndex'i Tamsayı Olarak KarartınDim SlideIndexPrevious As Integer' Slayt gösterisi sırasında Geçerli slaydı seçili slayt 4'e değiştirSlideIndex = 4' Geçerli slayt gösterisi penceresinin dizini SlideShowWindows koleksiyonunda 1'dirSlideIndexPrevious = SlideShowWindows(1).View.CurrentShowPositionSlideShowWindows(1).View.GotoSlide SlideIndexAlt Bitiş |
Tüm Metin Kutularındaki Tüm Slaytlardaki Yazı Tipini Değiştir
123456789101112131415 | Alt ChangeFontOnAllSlides()mySlide'ı slayt olarak karartDim shp As Shape' Tüm Slaytlarda Yazı Tipi Boyutunu DeğiştirActivePresentation.Slides'deki Her mySlide içinmySlide.Shapes'teki Her shp içinshp.Type = 17 ise ' msoTextBox = 17Yazı Tipi Boyutunu 24 olarak değiştirshp.TextFrame.TextRange.Font.Size = 24BitirSonraki sayfaSonraki mySlideAlt Bitiş |
Tüm Metin Kutularında Büyük Harften Normale Değiştir
123456789101112131415 | Alt ChangeCaseFromUppertoNormal()mySlide'ı slayt olarak karartDim shp As Shape' Tüm slaytlar için Büyük Harften Normal Harf'e geçActivePresentation.Slides'deki Her mySlide içinmySlide.Shapes'teki Her shp içinshp.Type = 17 ise ' msoTextBox = 17' Büyük Harfi Normal Harf Olarak Değiştirshp.TextFrame2.TextRange.Font.Allcaps = YanlışBitirSonraki sayfaSonraki mySlideAlt Bitiş |
Tüm Metin Kutularında Büyük ve Normal Arasında Geçiş Yap
12345678910111213141516 | Alt ToggleCaseBetweenUpperAndNormal()mySlide'ı slayt olarak karartDim shp As Shape' Tüm slaytlar için Büyük Harf ve Normal Harf arasında geçiş yapActivePresentation.Slides'deki Her mySlide içinmySlide.Shapes'teki Her shp içinshp.Type = 17 ise ' msoTextBox = 17' Büyük Harf ve Normal Harf arasında geçiş yapshp.TextFrame2.TextRange.Font.Allcaps = _shp.TextFrame2.TextRange.Font.Allcaps değilBitirSonraki sayfaSonraki mySlideAlt Bitiş |
Alt Çizgiyi Azalanlardan Kaldır
Tipografide, bir alt çizgi, bir harfin bir yazı tipinin satır taban çizgisinin altına uzanan kısmıdır. Çoğu yazı tipinde, alt karakterler g, j, q, p, y ve bazen f gibi küçük harfli karakterler için ayrılmıştır.
Metnin altını çizdiğinizde, alt satırların altında hoş görünmüyor. İşte tüm Sunumdaki g, j, p, q ve y gibi tüm karakterlerden alt çizgiyi kaldırmak için kod.
1234567891011121314151617181920212223242526 | Alt RemoveUnderlineFromDescenders()mySlide'ı slayt olarak karartDim shp As ShapeDize As ininers_list DimDize olarak loş ifadeDim x Kadar Uzun' Alt çizgileri Descender'lardan kaldırınineners_list = "gjpqy"ActivePresentation.Slides'deki Her mySlide içinmySlide.Shapes'teki Her shp içinshp.Type = 17 ise ' msoTextBox = 17"gjpqy" harflerinin alt çizgisini kaldırınshp.TextFrame.TextRange ileifade = .Metinx = 1 için Len(.Text)InStr(descenders_list, Mid$(phrase, x, 1)) > 0 ise.Characters(x, 1).Font.Underline = FalseBitirSonraki xİle bitmekBitirSonraki sayfaSonraki mySlideAlt Bitiş |
Tüm Slaytlardan Animasyonları Kaldır
Bir Sunuda ayarlanan tüm animasyonları kaldırmak için aşağıdaki kodu kullanın.
123456789101112 | Alt RemoveAnimationsFromAllSlides()mySlide'ı slayt olarak karartDim kadar uzunActivePresentation.Slides'deki Her mySlide içini = mySlide.TimeLine.MainSequence.Count için 1 Adım -1 için'Her Animasyonu KaldırmySlide.TimeLine.MainSequence.Item(i).Deletesonraki benSonraki mySlideAlt Bitiş |
Sunuyu PDF Olarak Kaydet
Aktif Sunumu kolayca PDF formatında kaydedebilirsiniz.
1234567891011 | Alt SavePresentationAsPDF()Dize Olarak Dim pptNamePDF Adını Dize Olarak KarartPowerPoint'i PDF olarak kaydetpptName = ActivePresentation.FullName' Addaki PowerPoint dosya uzantısını PDF olarak değiştirinPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Alt Bitiş |
Metni Bul ve Değiştir
Tüm Slaytların Tüm Metin Kutularında metin bulabilir ve değiştirebilirsiniz. Bulmak istediğiniz metnin (findWhat tarafından tanımlanan) ilk örneğinden sonra, varsa diğer örnekleri bulmak için Find komutunda dolaşmanız gerekir.
123456789101112131415161718192021222324252627282930313233 | Alt FindAndReplaceText()mySlide'ı slayt olarak karartDim shp As ShapeDim findWhat As StringDim replaceWith As StringTextRange Olarak ShpTxt DimTextRange Olarak TmpTxt'yi DimfindWhat = "çakal"replaceWith = "tilki"' Bul ve Bul ve DeğiştirActivePresentation.Slides'deki Her mySlide içinmySlide.Shapes'teki Her shp içinshp.Type = 17 ise ' msoTextBox = 17ShpTxt = shp.TextFrame.TextRange olarak ayarlayın'Bul' kelimesinin İlk Örneğini Bul (varsa)Set TmpTxt = ShpTxt.Replace(findWhat, _Replacewhat:=replaceWith, _WholeWords:=Doğru)'Bul' kelimesinin Ek Örneklerini Bul (varsa)TmpTxt Değilken Yapmak Hiçbir Şey DeğildirSet ShpTxt = ShpTxt.Characters(TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Set TmpTxt = ShpTxt.Replace(findWhat, _Replacewhat:=replaceWith, _WholeWords:=Doğru)DöngüBitirSonraki sayfaSonraki mySlideAlt Bitiş |
Slaytı Görüntü Olarak Dışa Aktar
Geçerli Slayt'ı (veya başka bir slaytı) PNG veya JPG (JPEG) veya BMP görüntüsü olarak dışa aktarabilirsiniz.
1234567891011121314 | Alt ExportSlideAsImage()Dim imageType As StringDize Olarak Dim pptNameDim imageName As StringmySlide'ı slayt olarak karart' Geçerli Slaydı Görüntüye AktarimageType = "png" ' veya jpg veya bmppptName = ActivePresentation.FullNameimageName = Left(pptName, InStr(pptName, ".")) & imageTypemySlide = Application.ActiveWindow.View.slide olarak ayarlayınmySlide.Export imageName, imageTypeAlt Bitiş |
Tam Slaytı Kapatmak İçin Resmi Yeniden Boyutlandır
1234567891011121314151617181920212223242526 | Alt ResizeImageToCoverFullSlide()mySlide'ı slayt olarak karartDim shp As Shape' Resmi tam slayt boyutunda yeniden boyutlandır' Geçerli slayttaki ilk şeklin yüksekliğini ve genişliğini değiştirin' slayt boyutlarına uyacak şekildemySlide = Application.ActiveWindow.View.slide olarak ayarlayınshp = mySlide.Shapes(1) olarak ayarla'''' Yukarıdaki iki ifadeyi şununla değiştirin:'' isterseniz aşağıdaki ifadeyi'' seçili şekli genişlet'' hiçbir şey seçilmezse hata verir'shp'yi ayarla = ActiveWindow.Selection.ShapeRange(1)shp ile.LockAspectRatio = Yanlış.Height = ActivePresentation.PageSetup.SlideHeight.Width = ActivePresentation.PageSetup.SlideWidth.Sol = 0.Üst = 0İle bitmekAlt Bitiş |
Tüm Çalışan Slayt Gösterilerinden Çık
Aynı anda birden fazla Slayt Gösteriniz varsa, aşağıdaki makroyu kullanarak hepsini kapatabilirsiniz.
1234567 | Alt ExitAllRunningSlideShows()SlideShowWindows.Count > 0 iken yapınSlideShowWindows(1).View.ExitDöngüAlt Bitiş |
Excel'den PowerPoint'i Otomatikleştirme
PowerPoint'e diğer uygulamalar (Excel ve Word gibi) aracılığıyla da bağlanabilirsiniz. İlk adım olarak, bir PowerPoint örneğine başvurmalısınız.
Bunu yapmanın iki yolu vardır - erken bağlama ve geç bağlama .
PowerPoint'i Aç - Erken Bağlama
'Early Binding'de, Araçlar->Referanslar seçeneğini kullanarak VBE'de (Visual Basic Editor) açıkça 'Microsoft PowerPoint 16 Nesne Kitaplığı'na (MS Office 2022 için) bir başvuru ayarlamalısınız.
123 | ' Erken BağlamaUygulama Olarak Dim pptApppptApp = Yeni PowerPoint.Application olarak ayarlayın |
PowerPoint'i Aç - Geç Bağlama
'Geç Bağlama'da uygulama değişkeni bir nesne olarak bildirilir ve VBA motoru çalışma zamanında doğru uygulamaya bağlanır.
123 | ' Geç bağlamaNesne Olarak Dim pptAppSet pptApp = CreateObject("PowerPoint.Application") |
Uygulamayı Görünür Yap
Referansı PowperPoint uygulamasına ayarladıktan sonra görünür hale getirmeniz gerekebilir.
1 | pptApp.Visible = Doğru |
PowerPoint'i manipüle etme
Yukarıda sizin tarafınızdan oluşturulan PowerPoint referansını ekleyerek, yukarıda Excel'den açıklanan PowerPoint içinden sunuları değiştirmek için tüm yöntemleri kullanabilirsiniz.
Örneğin
1 | Presentations.Open ("Sunumum.pptx") |
bunu beğenerek kullanmak lazım
1 | pptApp .Presentations.Open ("Sunumum.pptx") |
Uygulamayı Kapat
PowerPoint uygulamasıyla yapmak istediğinizi tamamladıktan sonra, uygulamayı kapatmalı ve referansı bırakmalısınız.
12 | pptApp.ÇıkpptApp'yi ayarla = Hiçbir şey |
Excel'den PowerPoint'e Kopyalama
Bu kod, Excel'den PowerPoint'e bir aralığı kopyalayacaktır:
Not: Excel'den bir aralığın VBA kullanılarak PowerPoint'e nasıl kopyalanabileceğini göstermek mümkün olduğunca basit tutulmuştur.
12345678910111213141516171819 | Alt copyRangeToPresentation()' Yeni PowerPoint Örneği AçSet pptApp = CreateObject("PowerPoint.Application")pptApp ile' Yeni Bir Sunum Oluşturppt = .Sunumlar.Add olarak ayarla' Boş Bir Slayt Ekleset newSlide = ppt.Slides.Add(1, 12) ' ppLayoutBlank = 12' Excel'de Aktif Sayfadan Aralığı KopyalaActiveSheet.Range("A1:E10").Kopyala' Powerpoint'e Resim Olarak YapıştırnewSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile' PowerPoint'e geç.Etkinleştirİle bitmekAlt Bitiş |
PowerPoint VBA SSS'leri
PPT'deki makrolar nelerdir?
Makro, görevleri otomatikleştiren bir dizi programlama talimatına atıfta bulunan genel bir terimdir. PowerPoint (PPT) Makroları, VBA programlama dilini kullanarak PowerPoint'teki görevleri otomatikleştirir.
PowerPoint'te VBA'yı nasıl kullanırım?
VBA'yı PowerPoint'te kullanmak için VBA Düzenleyicisini açın (ALT + F11 veya Geliştirici > Visual Basic).
PowerPoint'te nasıl Makro oluştururum?
1. VBA Düzenleyicisini açın (ALT + F11 veya Geliştirici > Visual Basic)
2. Bir Kod Modülü oluşturmak için Ekle > Modül'e gidin
3. 'Sub HelloWorld' yazın ve Enter'a basın
4. "Sub HelloWorld" ve "End Sub" satırları arasında "MsgBox "Hello World!" yazın.
5. Bir Makro oluşturdunuz!
6. Şimdi Makroyu çalıştırmak için 'F5' tuşuna basın
Yazan: Vinamra Chandra