有没有办法可以通过powerpoint中的vba/宏来改变音效对象的音量?即使静音和取消静音也足以满足我想做的事情。
Dim oSh As Shape
Set oSh = ActiveWindow.Selection.ShapeRange(1)
With oSh.MediaFormat
.Volume = 1 ' scale is 0 to 1
.Muted = False ' | True
End With
一个非常丑陋的解决方法。我确信有更好的方法可以做到这一点,但就是这样
Sub mute()
Dim gameSlide As Slide
Set gameSlide = ActivePresentation.Slides("Round Board")
gameSlide.Shapes("numSound 5").MediaFormat.StartPoint = gameSlide.Shapes("numSound 5").MediaFormat.Length - 1
End Sub
Sub unmute()
Dim gameSlide As Slide
Set gameSlide = ActivePresentation.Slides("Round Board")
gameSlide.Shapes("numSound 5").MediaFormat.StartPoint = 0
gameSlide.Shapes("numSound 5").MediaFormat.EndPoint = gameSlide.Shapes("numSound 5").MediaFormat.Length
End Sub
我遇到了同样的问题,不幸的是,活动幻灯片上 MediaFormat 属性的更改不会立即生效。
实际上,我为这些简单的问题找到了一些或多或少复杂的解决方法,如果您只想通过 VBA 动态静音/取消静音与形状关联的音频,这将有所帮助:
Private start As Double
Sub toggleMuteUnmute()
Dim sld As Slide
Dim sha As Shape
Dim plr As Player
Dim newPosition As Double
Set sld = ActivePresentation.SlideShowWindow.View.Slide
Set sha = sld.Shapes(1)
Set plr = ActivePresentation.SlideShowWindow.View.Player(sha.Id)
If plr.State = ppPlaying Then ' Muting
plr.Pause
start = Timer()
Else ' Unmuting with position correction
newPosition = plr.CurrentPosition + (Timer() - start) * 1000
If sha.MediaFormat.EndPoint > newPosition Then
plr.CurrentPosition = newPosition
plr.Play
End If
End If
End Sub