Конвертировать DOCX в PDF не удается в VBScript - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу конвертировать файл docx в pdf с помощью vbscript. Но мой скрипт всегда выдает ошибки. Я не знаю, что я делаю неправильно:

Set oFSO  = CreateObject("Scripting.FileSystemObject")
For i= 0 To WScript.Arguments.Count -1
   Set objWord = CreateObject("Word.Application")
   objWord.Visible = False

   oFile = WScript.Arguments(i)
   dirPath = oFSO.GetParentFolderName(oFile)

       If UCase(oFSO.GetExtensionName(oFile)) = "DOC" Or UCase(oFSO.GetExtensionName(oFile)) = "DOCX" Then
          pdfPath = dirPath & "\" & GetFilenameWithoutExtension(oFile) & ".pdf"
          Set objDoc = objWord.documents.open(dirPath & "\" & oFile)
          objDoc.saveas pdfPath, 17
          objDoc.Close

       End If   

   objWord.Quit   

Next

Function GetFilenameWithoutExtension(ByVal FileName)
  Dim Result, i
  Result = FileName
  i = InStrRev(FileName, ".")
  If ( i > 0 ) Then
    Result = Mid(FileName, 1, i - 1)
  End If
  GetFilenameWithoutExtension = Result
End Function

Этот код выдает следующую ошибку:

script.vbs (15, 5) Ошибка времени выполнения Microsoft VBScript: Требуемый объект: 'objWord.documents.open (...)'

Я попробовал следующее:

Set oFSO  = CreateObject("Scripting.FileSystemObject")
For i= 0 To WScript.Arguments.Count -1
   Set objWord = CreateObject("Word.Application")
   objWord.Visible = False

   Set oFile = oFSO.GetFile(WScript.Arguments(i))
   dirPath = oFSO.GetParentFolderName(WScript.Arguments(i))

       If UCase(oFSO.GetExtensionName(oFile.Name)) = "DOC" Or UCase(oFSO.GetExtensionName(oFile.Name)) = "DOCX" Then
          pdfPath = dirPath & "\" & GetFilenameWithoutExtension(oFile.Name) & ".pdf"
          Set objDoc = objWord.documents.open(dirPath & "\" & oFile.Name)
          objDoc.saveas pdfPath, 17
          objDoc.Close

       End If   

   objWord.Quit   

Next

Function GetFilenameWithoutExtension(ByVal FileName)
  Dim Result, i
  Result = FileName
  i = InStrRev(FileName, ".")
  If ( i > 0 ) Then
    Result = Mid(FileName, 1, i - 1)
  End If
  GetFilenameWithoutExtension = Result
End Function

Но тогда я получаю ошибку:

script.vbs (12, 5) Microsoft Word: сбой команды

1 Ответ

0 голосов
/ 24 февраля 2020

Я нашел решение. Вторая версия работает с документом, созданным в Word.

Поскольку я использую это в документе, созданном с помощью кода, эта опция не работает в самом Word. Так что это нормально, он не будет работать и со сценарием.

...