PowerPoint VBA Makro Örnekleri ve Eğitimi

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

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave