Powerpoint 在宏中更改音效音量

问题描述 投票:0回答:3

有没有办法可以通过powerpoint中的vba/宏来改变音效对象的音量?即使静音和取消静音也足以满足我想做的事情。

vba powerpoint
3个回答
0
投票
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

0
投票

一个非常丑陋的解决方法。我确信有更好的方法可以做到这一点,但就是这样

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

0
投票

我遇到了同样的问题,不幸的是,活动幻灯片上 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
© www.soinside.com 2019 - 2024. All rights reserved.