Saya harap saya di SE yang tepat. Posting yang saya temukan mengarahkan saya untuk memposting di sini.
BLUF: Saya mencoba menggunakan pernyataan if / else untuk menerapkan / menghapus animasi pulsa pada objek tertentu di PowerPoint.
Latar Belakang: Kode ini hidup pada dokumen excel karena saya menggunakannya sebagai firewall figuratif dasar sederhana untuk menjaga karyawan dari mengacaukan slide. Saya ingin dokumen pemutakhiran langsung yang mendorong info ke slide PowerPoint yang sedang berjalan dan memperbarui teks ke status status situs tertentu (atas atau bawah). Saya membuat tombol naik / turun sederhana yang hanya mengubah antara UP / DN dalam sel dan memasukkannya ke sel lain untuk menentukan apa yang harus dilakukan dengan data. Kemudian tombol makro menjalankan kode dan memperbarui teks pada PowerPoint.
Berita baik: Semuanya berfungsi dengan baik (selain dari animasi). Teks berubah (kata-kata dan warna) saat PowerPoint berjalan dan mengunci dokumen Excel mencegah karyawan mengacaukan pengaturan apa pun.
Bagian utama dari kode yang dimaksud:
For Each c In Sheet1.Range("a2:a" & Sheet1.Range("a" & Rows.Count).End(xlUp).Row)
shapeslide = Sheet1.Range("a" & c.Row)
shapename = Sheet1.Range("b" & c.Row)
shapetext = (Sheet1.Range("c" & c.Row).Text)
friendlyname = Sheet1.Range("d" & c.Row)
pPreso.Slides(shapeslide).Shapes(shapename).TextEffect.Text = shapetext
If (friendlyname = "DN") Then
pPreso.Slides(shapeslide).Shapes(shapename).TextFrame.TextRange.Font.Color.RGB = RGB(255, 0, 0)
'The porttion below worked, but it is not animation (not as cool)
'pPreso.Slides(shapeslide).Shapes(shapename).TextEffect.PresetTextEffect = 4
'pPreso.Slides(shapeslide).Shapes(shapename).TextEffectFormat = msoAnimEffectBoldFlash
Else
pPreso.Slides(shapeslide).Shapes(shapename).TextFrame.TextRange.Font.Color.RGB = RGB(0, 255, 0)
End If
Next c
Pernyataan for dijalankan melalui sel tempat saya memanggil teks slide, bentuk, dan bentuk tertentu. Nama friendly adalah pengulangan untuk menjalankan IF / Else.
Jika saya mengubah status menjadi DN, berubah menjadi merah, maka jika saya mengubahnya ke UP, itu berubah menjadi hijau.
Saya bisa menerapkan animasi menggunakan kode ini di If / Else:
Dim oeff As Effect
Dim osld As Shape
Set osld = ppapp.ActivePresentation.Slides(shapeslide).Shapes(shapename)
With pPreso.Slides(shapeslide)
Set oeff = .TimeLine.MainSequence.AddEffect(Shape:=.Shapes(shapename),_ effectID:=msoAnimEffectBoldFlash, trigger:=msoAnimTriggerAfterPrevious)
With oeff
.Timing.RepeatDuration = 25
End With
End With
Masalah utama adalah bahwa (dapat dimengerti) itu terus menerapkan animasi, karena jelas tidak ada pemeriksaan untuk melihat apakah diterapkan dalam kode ini. Kedua, ketika saya mencoba memperkenalkan oeff.delete, itu hanya meninggalkan animasi dan kemudian menerapkan non animasi untuk semua orang lain yang ditandai sebagai "UP" di panel animasi PowerPoint.
Jadi, 2 hal:
Apakah ada opsi untuk menerapkan animasi pulsa? Saya tidak dapat menemukannya di area perpustakaan msoAnimEffect.
Adakah yang memiliki cara yang elegan untuk menghidupkan atau mematikan animasi menggunakan metode yang saya buat ini atau akankah saya perlu mencari cara untuk mengatur bendera, membaca bendera itu, lalu memasukkannya ke dalam pernyataan If / Else?
Berikut ini adalah foto dari Dokumen Excel:
sumber