PowerPoint VBA Przykłady makr i samouczek

To jest kompletny przewodnik dotyczący automatyzacji programu PowerPoint przy użyciu makr VBA (Visual Basic for Applications). Poniżej znajdziesz wiele przydatnych przykładów.

VBA PDF (bezpłatne pliki do pobrania)

Pobierz nasz darmowy samouczek Microsoft PowerPoint VBA! Lub samouczki VBA dla innych programów biurowych!

Pobierać

Samouczek PowerPoint VBA (makra)

Zapisz jako prezentację z obsługą makr

Prezentacja z kodem VBA powinna być „Zapisana jako” Prezentacja PowerPoint z włączoną obsługą makr (*.pptm)

Włącz kartę „Programista” na Wstążce

Przed utworzeniem kodu VBA należy włączyć kartę Deweloper na Wstążce. Aby to zrobić, wybierz Plik -> Opcje, a następnie kliknij „Dostosuj wstążkę” i zaznacz pole obok karty „Programista” w prawym okienku.

Utwórz makro PowerPointa

Oto prosty przykład makra PowerPoint VBA:

1234567891011 Sub ZapiszPrezentacjęAsPDF()Dim nazwa ppt jako ciągPrzyciemnij nazwę pliku PDF jako ciąg' Zapisz PowerPoint jako PDFpptName = AktywnaPrezentacja.PełnaNazwa' Zamień rozszerzenie pliku PowerPoint w nazwie na PDFPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Napis końcowy

Zapisuje aktywną prezentację jako plik PDF. Każdy wiersz kodu wykonuje następujące czynności:

  • Tworzy zmienne dla nazwy PowerPoint i nazwy PDF
  • Przypisuje nazwę aktywnej prezentacji do zmiennej pptName
  • Tworzy pełną nazwę pliku PDF
  • Zapisuje prezentację jako plik PDF

Aplikacja PowerPoint

Gdy kod VBA jest uruchomiony w prezentacji PowerPoint, aplikacja PowerPoint jest aplikacją domyślną i można nią manipulować bez wyraźnego odniesienia. Utwórz nową prezentację

Aby utworzyć prezentację, użyj metody Add aplikacji PowerPoint.

123 Aplikacja.Prezentacje.Dodaj„lub bez wyraźnego odniesienia”Prezentacje.Dodaj

Otwórz nową prezentację

Aby otworzyć nową i pustą prezentację, użyj metody Add z kolekcji Aplikacja.Prezentacje

1 Prezentacje.Dodaj

Otwórz istniejącą prezentację

Aby otworzyć już utworzoną prezentację, użyj metody Open z kolekcji Aplikacja.Prezentacje

1 Prezentacje.Otwórz („Moja prezentacja.pptx”)

Powyższy kod zakłada, że ​​prezentacja znajduje się w tym samym katalogu, co prezentacja PowerPoint zawierająca kod.

Otwórz i przypisz do zmiennej

Powinieneś przypisać otwartą prezentację do zmiennej, aby móc nią manipulować zgodnie z wymaganiami.

12 Przyciemnij ppt jako prezentacjęUstaw ppt = Presentations.Open("Moja prezentacja.pptx")

Zobacz Aktywna prezentacja

Użyj odwołania ActivePrentation, aby manipulować prezentacją aktywną w GUI podczas wykonywania kodu VBA.

12 ' Wydrukuj nazwę ActivePresentation w bezpośrednim oknieDebug.Print ActivePresentation.Name

Zapisz bieżącą prezentację

Poniższe oświadczenie zapisze Aktywną Prezentację, jeśli została wcześniej zapisana. Jeśli nie został zapisany, zostaniesz poproszony o okno dialogowe „Zapisz jako”.

1 AktywnaPrezentacja.Zapisz

Zamknij bieżącą prezentację

Poniższe oświadczenie zamknie Aktywną Prezentację, nawet jeśli nie została zapisana po ostatniej edycji.

1 AktywnaPrezentacja.Zamknij

Przydatne referencje

Przypisz istniejącą prezentację (według nazwy) do zmiennej

12 Przyciemnij moją prezentację według nazwy jako prezentacjęUstaw myPresentationByName = Application.Presentations("Moja prezentacja")

Przypisz aktywny slajd do zmiennej

12 Prąd przyciemnieniaSlide As SlideUstaw currentSlide = Application.ActiveWindow.View.Slide

Przypisz slajd według indeksu do zmiennej

12 Przyciemnij mySlide jako slajdUstaw mySlide = ActivePresentation.Slides(11)

Policz liczbę slajdów

12 Dim slideCount As LongslideCount = ActivePresentation.Slides.Count

Uzyskaj indeks slajdów Numer bieżącego slajdu

12 Dim currentSlideIndex As SlidecurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndex

Dodaj pusty slajd na końcu pokazu slajdów

1234567 Dim slideCount As LongDim newSlide as SlideslideCount = ActivePresentation.Slides.CountSet newSlide = ActivePresentation.Slides.Add(slideCount + 1, 12)' lub jako ppLayoutBlank = 12Ustaw nowySlide = ActivePresentation.Slides.Add(slideCount + 1, ppLayoutBlank)

Dodaj slajd po bieżącym slajdzie

12345 Przyciemnij nowyPrzesuń jako slajdDim currentSlideIndex jako IntegercurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexUstaw nowySlide = ActivePresentation.Slides.Add(currentSlideIndex, ppLayoutBlank)

Usuń slajd

1234 Dim currentSlideIndex jako IntegercurrentSlideIndex = Application.ActiveWindow.View.Slide.SlideIndexActivePresentation.Slides(currentSlideIndex).Usuń

Przejdź do konkretnego slajdu

12 ' To zabierze Cię do slajdu numer 4Aplikacja.ActiveWindow.View.GotoSlide (4)

Przesuń slajd

Możesz przenieść slajd ze starej pozycji do nowej

123456 ' Przejdź ze slajdu 3 do pierwszego slajduDim oldPosition jako liczba całkowita, dim newPosition jako liczba całkowitastaraPozycja = 3nowaPozycja = 1AktywnaPrezentacja.Slajdy(stara pozycja).Przenieś do pozycji:=nowa pozycja

Zapętlaj wszystkie slajdy

Możesz zrobić coś z każdym slajdem lub przejrzeć wszystkie slajdy, aby znaleźć kilka slajdów i zrobić coś z użyciem kodu;

123456 Przyciemnij mySlide jako slajdDla każdego mySlide w ActivePresentation.Slides' Zrób coś z bieżącym slajdem, o którym mowa w zmiennej 'mySlide'' Debug.Drukuj mySlide.NameNastępny slajd

Zapętlaj wszystkie kształty aktywnego slajdu

Moc PowerPoint można wykorzystać za pomocą „Kształtów”. Poniższy kod zapętla wszystkie kształty na bieżącym slajdzie, dzięki czemu możesz nimi manipulować, jak chcesz;

123456789 Dim currentSlide as SlideDim shp jako kształtUstaw currentSlide = Application.ActiveWindow.View.SlideDla każdego shp In currentSlide.Shapes' Zrób coś z obecnym kształtem określonym w zmiennej 'shp'' Na przykład wydrukuj nazwę kształtu w oknie bezpośrednimDebug.Drukuj shp.NameNastępny shp

Zapętl wszystkie kształty we wszystkich slajdach

Możesz przejść przez wszystkie kształty w prezentacji, dodając pętlę, aby przejść przez wszystkie slajdy.

123456789 Dim currentSlide as SlideDim shp jako kształtDla każdego bieżącego slajdu w aktywnej prezentacji.SlajdyDla każdego shp In currentSlide.Shapes' Zrób coś z bieżącym kształtem określonym w zmiennej 'shp'Debug.Drukuj shp.NameNastępny shpNastępny bieżącySlajd

Przejdź przez wszystkie pola tekstowe aktywnego slajdu

TextBoxes to najczęściej używane kształty w prezentacjach PowerPoint. Możesz przejść przez wszystkie pola tekstowe, dodając zaznaczenie „Typ kształtu”. TexBoxy mają typ kształtu zdefiniowany jako stała VBA msoTextBox (wartość liczbowa stałej to 17)

1234567891011 Dim currentSlide as SlideDim shp jako kształtUstaw currentSlide = Application.ActiveWindow.View.SlideDla każdego shp In currentSlide.Shapes' Sprawdź, czy typ kształtu to msoTextBoxJeśli shp.Type = 17 Wtedy ' msoTextBox = 17'Wydrukuj tekst w polu tekstowymDebug.Print shp.TextFrame2.TextRange.TextZakończ, jeśliNastępny shp

Przechodź przez wszystkie pola tekstowe we wszystkich slajdach

Ponownie możesz przejść przez wszystkie pola tekstowe w prezentacji, dodając pętlę, aby przejść przez wszystkie slajdy.

1234567891011 Dim currentSlide as Slide Dim shp as ShapeDla każdego bieżącego slajdu w aktywnej prezentacji.SlajdyDla każdego shp In currentSlide.Shapes' Sprawdź, czy typ kształtu to msoTextBoxJeśli shp.Type = 17 Wtedy ' msoTextBox = 17' Zrób coś z polem tekstowym określonym w zmiennej 'shp'Debug.Print shp.TextFrame2.TextRange.TextZakończ, jeśliNastępny shpNastępny bieżącySlajd

Skopiuj wybrane slajdy do nowej prezentacji PPT

Aby skopiować niektóre slajdy do nowej prezentacji, najpierw wybierz żądane slajdy w istniejącej prezentacji, a następnie uruchom poniższy kod;

123456789101112131415161718 Dim currentPrezentacja jako prezentacjaDim currentSlide as SlideDim newPrezentacja jako prezentacja' Zapisz odniesienie do bieżącej prezentacjiUstaw bieżącąPrezentację = Aplikacja.AktywnaPrezentacja' Zapisz odniesienie do bieżącego slajduUstaw currentSlide = Application.ActiveWindow.View.Slide' Dodaj nową prezentację i zapisz w odnośnikuUstaw nową prezentację = Aplikacja.Prezentacje.Dodaj' Skopiuj wybrane slajdyWybór.Kopiuj' Wklej to w nowej prezentacjiNowaPrezentacja.Slajdy.Wklej

Skopiuj aktywny slajd na koniec aktywnej prezentacji

12345 ' Kopiuj bieżący slajdApplication.ActiveWindow.View.Slide.Copy' Wklej na końcuAktywnaPrezentacja.Slajdy.Wklej

Przydatne przykłady makr w PowerPoint

Oto kilka przydatnych przykładów makr pokazujących, jak wykonywać zadania. Zademonstrują one również koncepcje opisane powyżej.

Zmień slajd podczas pokazu slajdów

1234567891011 Sub ChangeSlidePodczasSlideShow()Dim SlideIndex jako liczba całkowitaDim SlideIndexPoprzedni jako liczba całkowita' Zmień bieżący slajd na wybrany slajd 4 podczas pokazu slajdówIndeks slajdów = 4' Indeks bieżącego okna pokazu slajdów to 1 w kolekcji SlideShowWindowsSlideIndexPrevious = SlideShowWindows(1).View.CurrentShowPositionSlideShowWindows(1).View.GotoSlide SlideIndexNapis końcowy

Zmień czcionkę na wszystkich slajdach we wszystkich polach tekstowych

123456789101112131415 Sub Change FontOnAllSlides()Przyciemnij mójSlajd jako slajdPrzyciemnij shp jako kształt' Zmień rozmiar czcionki we wszystkich slajdachDla każdego mySlide w ActivePresentation.SlidesDla każdego shp w mySlide.ShapesJeśli shp.Type = 17 Wtedy ' msoTextBox = 17' Zmień rozmiar czcionki na 24shp.TextFrame.TextRange.Font.Size = 24Zakończ, jeśliNastępny shpNastępny mójSlajdNapis końcowy

Zmień wielkość liter z górnej na normalną we wszystkich polach tekstowych

123456789101112131415 Podrzędna sprawa zmian od górnej do normalnej()Przyciemnij mójSlajd jako slajdPrzyciemnij shp jako kształt' Zmień z wielkich na normalne dla wszystkich slajdówDla każdego mySlide w ActivePresentation.SlidesDla każdego shp w mySlide.ShapesJeśli shp.Type = 17 Wtedy ' msoTextBox = 17' Zmień wielkie litery na zwykłeshp.TextFrame2.TextRange.Font.Allcaps = FałszZakończ, jeśliNastępny shpNastępny mójSlajdNapis końcowy

Przełącz wielkość liter między górnymi i normalnymi we wszystkich polach tekstowych

12345678910111213141516 Podrzędna zmiana wielkości liter między górną a normalną()Przyciemnij mySlide jako slajdPrzyciemnij shp jako kształt' Przełącz między wielkimi i normalnymi literami dla wszystkich slajdówDla każdego mySlide w ActivePresentation.SlidesDla każdego shp w mySlide.ShapesJeśli shp.Type = 17 Wtedy ' msoTextBox = 17' Przełącz między wielkimi i normalnymi literamishp.TextFrame2.TextRange.Font.Allcaps = _Nie shp.TextFrame2.TextRange.Font.AllcapsZakończ, jeśliNastępny shpNastępny mójSlajdNapis końcowy

Usuń podkreślenie z linii zstępujących

W typografii dolna część to część litery, która rozciąga się poniżej linii bazowej czcionki. W większości czcionek znaki malejące są zarezerwowane dla małych liter, takich jak g, j, q, p, y, a czasami f.

Kiedy podkreślisz tekst, nie wygląda to ładnie pod dolnymi literami. Oto kod, który usuwa podkreślenie ze wszystkich takich znaków g, j, p, q i y w całej prezentacji.

1234567891011121314151617181920212223242526 Sub UsuńUnderlineFromDescennders()Przyciemnij mójSlajd jako slajdPrzyciemnij shp jako kształtDim lowerers_list As StringDim fraza As StringDim x tak długo' Usuń podkreślenia z Descendersbottomers_list = "gjpqy"Dla każdego mySlide w ActivePresentation.SlidesDla każdego shp w mySlide.ShapesJeśli shp.Type = 17 Wtedy ' msoTextBox = 17' Usuń podkreślenie z liter "gjpqy"Z shp.TextFrame.TextRangefraza = .TekstDla x = 1 To Len(.Text)If InStr(descenders_list, Mid$(fraza, x, 1)) > 0 Wtedy.Characters(x, 1).Font.Underline = FalseZakończ, jeśliNastępny xKończyć zZakończ, jeśliNastępny shpNastępny mójSlajdNapis końcowy

Usuń animacje ze wszystkich slajdów

Użyj poniższego kodu, aby usunąć wszystkie animacje ustawione w prezentacji.

123456789101112 Sub UsuńAnimacjeZWszystkieslajdy()Przyciemnij mySlide jako slajdPrzyciemnij i tak długoDla każdego mySlide w ActivePresentation.SlidesFor i = mySlide.TimeLine.MainSequence.Count to 1 Step -1„Usuń każdą animację”mySlide.TimeLine.MainSequence.Item(i).DeleteDalej jaNastępny mójSlajdNapis końcowy

Zapisz prezentację jako PDF

Możesz łatwo zapisać aktywną prezentację w formacie PDF.

1234567891011 Sub ZapiszPrezentacjęAsPDF()Dim nazwa ppt jako ciągPrzyciemnij nazwę pliku PDF jako ciąg' Zapisz PowerPoint jako PDFpptName = AktywnaPrezentacja.PełnaNazwa' Zamień rozszerzenie pliku PowerPoint w nazwie na PDFPDFName = Left(pptName, InStr(pptName, ".")) & "pdf"ActivePresentation.ExportAsFixedFormat PDFName, 2 ' ppFixedFormatTypePDF = 2Napis końcowy

Znajdź i zamień tekst

Możesz znaleźć i zamienić tekst we wszystkich polach tekstowych wszystkich slajdów. Po pierwszym wystąpieniu tekstu, który chcesz znaleźć (zdefiniowanym przez findWhat), musisz wykonać pętlę przez polecenie Znajdź, aby znaleźć inne wystąpienia, jeśli takie istnieją.

123456789101112131415161718192021222324252627282930313233 Sub FindAndReplaceText()Przyciemnij mySlide jako slajdPrzyciemnij shp jako kształtDim findWhat As StringDim zastąpić jako ciągDim ShpTxt As TextRangeDim TmpTxt As TextRangefindWhat = "szakal"zamień na = "lis"' Znajdź i znajdź i zamieńDla każdego mySlide w ActivePresentation.SlidesDla każdego shp w mySlide.ShapesJeśli shp.Type = 17 Wtedy ' msoTextBox = 17Ustaw ShpTxt = shp.TextFrame.TextRange„Znajdź pierwsze wystąpienie słowa „Znajdź” (jeśli istnieje)Ustaw TmpTxt = ShpTxt.Replace(findWhat, _Zamień:=zamień na, _Całe słowa:=Prawda)„Znajdź wszelkie dodatkowe wystąpienia słowa „Znajdź” (jeśli istnieje)Zrób, chociaż nie TmpTxt to nicUstaw ShpTxt = ShpTxt.Characters(TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)Ustaw TmpTxt = ShpTxt.Replace(findWhat, _Zamień:=zamień na, _Całe słowa:=Prawda)PętlaZakończ, jeśliNastępny shpNastępny mójSlajdNapis końcowy

Eksportuj slajd jako obraz

Bieżący slajd (lub dowolny inny slajd) można wyeksportować jako obraz PNG, JPG (JPEG) lub BMP.

1234567891011121314 Sub ExportSlideAsImage()Dim imageType jako ciągDim nazwa ppt jako ciągDim imageName jako ciągPrzyciemnij mójSlajd jako slajd' Eksportuj bieżący slajd do obrazuimageType = "png" ' lub jpg lub bmppptName = AktywnaPrezentacja.PełnaNazwaimageName = Left(pptName, InStr(pptName, ".")) & imageTypeUstaw mySlide = Application.ActiveWindow.View.slidemySlide.Export imageName, imageTypeNapis końcowy

Zmień rozmiar obrazu, aby zakryć cały slajd

1234567891011121314151617181920212223242526 Sub ResizeImageToCoverFullSlide()Przyciemnij mójSlajd jako slajdPrzyciemnij shp jako kształt' Zmień rozmiar obrazu do pełnego rozmiaru slajdu' Zmień wysokość i szerokość pierwszego kształtu na bieżącym slajdzie'dopasować do wymiarów prowadnicyUstaw mySlide = Application.ActiveWindow.View.slideUstaw shp = mójSlajd.Kształty(1)'''' Zamień dwie powyższe instrukcje na'' następujące oświadczenie, jeśli chcesz'' rozwiń aktualnie wybrany kształt'' spowoduje błąd, jeśli nic nie zostanie wybrane'Ustaw shp = ActiveWindow.Selection.ShapeRange(1)Z shp.LockAspectRatio = Fałsz.Height = AktywnaPrezentacja.PageSetup.SlideHeight.Width = AktywnaPrezentacja.PageSetup.SlideWidth.W lewo = 0Góra = 0Kończyć zNapis końcowy

Wyjdź ze wszystkich uruchomionych pokazów slajdów

Jeśli masz otwartych wiele pokazów slajdów w tym samym czasie, możesz zamknąć je wszystkie za pomocą poniższego makra.

1234567 Sub ExitAllRunningSlideShows()Rób, gdy SlideShowWindows.Count > 0SlideShowWindows(1).View.ExitPętlaNapis końcowy

Automatyzacja PowerPointa z Excela

Możesz także łączyć się z programem PowerPoint przez inne aplikacje (takie jak Excel i Word). Jako pierwszy krok musisz odwołać się do wystąpienia programu PowerPoint.

Można to zrobić na dwa sposoby - wczesne wiązanie oraz późne wiązanie .

Otwórz PowerPoint - wczesne wiązanie

We „Early Binding” musisz wyraźnie ustawić odniesienie do „Microsoft PowerPoint 16 Object Library” (dla MS Office 2022) w VBE (Visual Basic Editor) za pomocą opcji Tools->References.

123 ' Wczesne wiązanieDim pptApp jako aplikacjaUstaw pptApp = Nowa aplikacja PowerPoint.

Otwórz PowerPoint - późne wiązanie

W „Late Binding” zmienna aplikacji jest deklarowana jako obiekt, a silnik VBA łączy się z odpowiednią aplikacją w czasie wykonywania.

123 'Późne wiązaniePrzyciemnij pptApp jako obiektUstaw pptApp = CreateObject("PowerPoint.Application")

Spraw, aby aplikacja była widoczna

Po ustawieniu referencji do aplikacji PowerPoint może być konieczne jej uwidocznienie.

1 pptApp.Visible = Prawda

Manipulowanie PowerPointem

Możesz użyć wszystkich metod do manipulowania prezentacjami z programu PowerPoint, opisanych powyżej z programu Excel, po prostu dodając odwołanie do utworzonego przez Ciebie programu PowerPoint.

Na przykład

1 Prezentacje.Otwórz („Moja prezentacja.pptx”)

musi być używany tak jak to

1 pptApp .Prezentacje.Open ("Moja prezentacja.pptx")

Zamknij aplikację

Po zakończeniu tego, co chciałeś zrobić z aplikacją PowerPoint, musisz ją zamknąć i zwolnić odwołanie.

12 pptApp.ZamknijUstaw pptApp = Nic

Kopiuj z Excela do PowerPointa

Ten kod skopiuje zakres z programu Excel do programu PowerPoint:

Notatka: Pokazanie, w jaki sposób zakres z Excela można skopiować do PowerPointa za pomocą VBA, utrzymano w możliwie najprostszy sposób.

12345678910111213141516171819 Sub copyRangeToPresentation()' Otwórz nową instancję PowerPointaUstaw pptApp = CreateObject("PowerPoint.Application")Z pptApp' Utwórz nową prezentacjęUstaw ppt = .Prezentacje.Dodaj' Dodaj pusty slajdSet newSlide = ppt.Slides.Add(1, 12) ' ppLayoutBlank = 12' Skopiuj zakres z aktywnego arkusza w programie ExcelActiveSheet.Range("A1:E10").Kopiuj' Wklej do programu PowerPoint jako obraznewSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile' Przełącz na PowerPoint.AktywujKończyć zNapis końcowy

Często zadawane pytania dotyczące PowerPoint VBA

Czym są makra w PPT?

Makro to ogólny termin odnoszący się do zestawu instrukcji programistycznych, które automatyzują zadania. PowerPoint (PPT) Makra automatyzują zadania w PowerPoint przy użyciu języka programowania VBA.

Jak korzystać z VBA w programie PowerPoint?

Aby użyć VBA w programie PowerPoint, otwórz Edytor VBA (ALT + F11 lub Deweloper > Visual Basic).

Jak utworzyć makro w programie PowerPoint?

1. Otwórz edytor VBA (ALT + F11 lub programista> Visual Basic)
2. Przejdź do Wstaw > Moduł, aby utworzyć moduł kodu
3. Wpisz „Sub HelloWorld” i naciśnij Enter
4. Pomiędzy wierszami „Sub HelloWorld” i „End Sub” wpisz „MsgBox „Hello World!”
5. Stworzyłeś makro!
6. Teraz naciśnij „F5”, aby uruchomić makro

Autor: Vinamra Chandra

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave