VBScript экспорт ppt / pptx в WMV - PullRequest
2 голосов
/ 30 марта 2020

Я новичок в VBScript, и у меня есть небольшая задача: экспортировать файл ppt / pptx в видео (WMV) в «фоновом» режиме. Я искал по Inte rnet, и теперь у меня есть этот скрипт:

'''
On Error Resume Next
Dim oPowerPointApp
Set oPowerPointApp = CreateObject("PowerPoint.Application")
If Err.Number = 0 Then
   oPowerPointApp.DisplayAlerts = ppAlertsNone
   Dim oPresentation
   Set oPresentation = oPowerPointApp.Presentations.Open("D:\TestPresentation.pptx", msoTrue, , msoFalse)
   If Err.Number = 0 Then
      ' True - use the existing transitions, 5 sec per slide by default, 720 - height of the video, 30 - fps, 85 - quality[1;100]
      oPresentation.CreateVideo "D:\TestPresentation.wmv", True, 5, 720, 30, 85
      ' Now wait for the conversion to be complete:
      Do
         ' Don't tie up the user interface; add DoEvents to give the mouse and keyboard time to keep up.
         DoEvents
         Select Case oPresentation.CreateVideoStatus
            Case PpMediaTaskStatus.ppMediaTaskStatusDone
               WScript.Echo "Conversion complete!"
               Err.Number = 0
               Exit Do
            Case PpMediaTaskStatus.ppMediaTaskStatusFailed
               WScript.Echo "Conversion failed!"
               Err.Number = 1
               Exit Do
            Case PpMediaTaskStatus.ppMediaTaskStatusInProgress
               WScript.Echo "Conversion in progress" ' For Debug only
            Case PpMediaTaskStatus.ppMediaTaskStatusNone
               ' You'll get this value when you ask for the status and no conversion is happening or has completed.
            Case PpMediaTaskStatus.ppMediaTaskStatusQueued
               WScript.Echo "Conversion queued" ' For Debug only
         End Select
         'WScript.Sleep 200
      Loop
      'WScript.Sleep 5000
      oPresentation.Close
   End If
   oPowerPointApp.Quit
End If
WScript.Echo Err.Number
'''

В основном все работает нормально. Выходное сообщение «Преобразование завершено!». Но есть всплывающее диалоговое окно «Да-Нет»: «Эта презентация в настоящее время экспортируется в видео. Закрытие этой презентации приведет к прерыванию ожидающего экспорта этой презентации. Вы все равно хотите закрыть?». И теперь мне нужно избегать показа этого диалога. Я пытался использовать задержку сна, но это не сработало. Можно ли избежать этого диалога? PowerPoint 2016 используется на моем конце. Спасибо.

1 Ответ

1 голос
/ 30 марта 2020

Если вы выключите On Error Resume Next, вы увидите ошибки времени выполнения на необъявленном PpMediaTaskStatus , т.е. объявите его или используйте его числовые значения c, как здесь

Do
  Select Case oPresentation.CreateVideoStatus
  Case 3 'PpMediaTaskStatus.ppMediaTaskStatusDone
    WScript.Echo "Conversion complete!"
    Err.Number = 0
    Exit Do
  Case 4 'PpMediaTaskStatus.ppMediaTaskStatusFailed
    WScript.Echo "Conversion failed!"
    Err.Number = 1
    Exit Do
  End Select
  WScript.Sleep 200 'it's in ms, so makes sense to set 1000 (1 sec)
Loop
...