title: VBSCRIPT PPT conversion script
body: <p>I'm attempting to convert PPT files to PPTX files using VBSCRIPT.  I haven't used VB in a very long time &amp; am pretty unfamiliar with the framework.  I'm attempting to modify a script that converts PPTX/PPT to PDF, however without much luck.  Here's an example of what I've got so far...</p>
  
  <pre><code>Option Explicit
  
  Dim inputFile
  Dim objPPT
  Dim objPresentation
  Dim objPrintOptions
  Dim objFso
  Dim pptf
  
  If WScript.Arguments.Count &lt;&gt; 1 Then
      WriteLine "You need to specify input and output files."
      WScript.Quit
  End If
  
  inputFile = WScript.Arguments(0)
  
  Set objFso = CreateObject("Scripting.FileSystemObject")
  
  If Not objFso.FileExists( inputFile ) Then
      WriteLine "Unable to find your input file " &amp; inputFile
      WScript.Quit
  End If
  
  
  
  WriteLine "Input File:  " &amp; inputFile
  
  Set objPPT = CreateObject( "PowerPoint.Application" )
  
  objPPT.Visible = True
  objPPT.Presentations.Open inputFile
  
  Set objPresentation = objPPT.ActivePresentation
  objPresentation.SaveAs "out.pptx", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsOpenXMLPresentation
  
  objPresentation.Close
  ObjPPT.Quit
  </code></pre>
  
  <p>Things turn pear shaped around the objPresentation.SaveAs line; obviously its illegal syntax - however I'm not sure of the best route here.  Any help would be much appreciated.  Also if there are other variables (or a link to api documentation) for converting doc->docx, and xls->xlsx.
  Thanks in advance.</p>
  
  <p>EDIT:
  I found a solution to this myself; sorry I stopped checking in on this thread a few days after posted it.  I found a documentation page for this code &amp; noticed one function in particular (convert2): <a href="http://msdn.microsoft.com/en-us/library/office/ff743830.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/office/ff743830.aspx</a></p>
  
  <p>I'll mark the answer below as the answer; because it came first (although I haven't tested it).  If you're interested - heres my code; AFAIK it only converts in between various PowerPoint formats (in either direction).  Also FYI I modified this script from another popularly googlized script on the topic; the only line I changed was one of the last (the convert2 mehtod). Anyways... (also - this requires office 2010; per the documentation)</p>
  
  <p>Usage:
  CSCRIPT scriptName.vbs C:\inputfileName.ppt C:\outputFileName.pptx</p>
  
  <pre><code>Option Explicit
  
  Sub WriteLine ( strLine )
      WScript.Stdout.WriteLine strLine
  End Sub
  
  ' http://msdn.microsoft.com/en-us/library/office/aa432714(v=office.12).aspx
  Const msoFalse = 0   ' False.
  Const msoTrue = -1   ' True.
  
  ' http://msdn.microsoft.com/en-us/library/office/bb265636(v=office.12).aspx
  Const ppFixedFormatIntentScreen = 1 ' Intent is to view exported file on screen.
  Const ppFixedFormatIntentPrint = 2  ' Intent is to print exported file.
  
  ' http://msdn.microsoft.com/en-us/library/office/ff746754.aspx
  Const ppFixedFormatTypeXPS = 1  ' XPS format
  Const ppFixedFormatTypePDF = 2  ' PDF format
  
  ' http://msdn.microsoft.com/en-us/library/office/ff744564.aspx
  Const ppPrintHandoutVerticalFirst = 1   ' Slides are ordered vertically, with the first slide in the upper-left corner and the second slide below it.
  Const ppPrintHandoutHorizontalFirst = 2 ' Slides are ordered horizontally, with the first slide in the upper-left corner and the second slide to the right of it.
  
  ' http://msdn.microsoft.com/en-us/library/office/ff744185.aspx
  Const ppPrintOutputSlides = 1               ' Slides
  Const ppPrintOutputTwoSlideHandouts = 2     ' Two Slide Handouts
  Const ppPrintOutputThreeSlideHandouts = 3   ' Three Slide Handouts
  Const ppPrintOutputSixSlideHandouts = 4     ' Six Slide Handouts
  Const ppPrintOutputNotesPages = 5           ' Notes Pages
  Const ppPrintOutputOutline = 6              ' Outline
  Const ppPrintOutputBuildSlides = 7          ' Build Slides
  Const ppPrintOutputFourSlideHandouts = 8    ' Four Slide Handouts
  Const ppPrintOutputNineSlideHandouts = 9    ' Nine Slide Handouts
  Const ppPrintOutputOneSlideHandouts = 10    ' Single Slide Handouts
  
  ' http://msdn.microsoft.com/en-us/library/office/ff745585.aspx
  Const ppPrintAll = 1            ' Print all slides in the presentation.
  Const ppPrintSelection = 2      ' Print a selection of slides.
  Const ppPrintCurrent = 3        ' Print the current slide from the presentation.
  Const ppPrintSlideRange = 4     ' Print a range of slides.
  Const ppPrintNamedSlideShow = 5 ' Print a named slideshow.
  
  ' http://msdn.microsoft.com/en-us/library/office/ff744228.aspx
  Const ppShowAll = 1             ' Show all.
  Const ppShowNamedSlideShow = 3  ' Show named slideshow.
  Const ppShowSlideRange = 2      ' Show slide range.
  
  '
  ' This is the actual script
  '
  
  Dim inputFile
  Dim outputFile
  Dim objPPT
  Dim objPresentation
  Dim objPrintOptions
  Dim objFso
  
  If WScript.Arguments.Count &lt;&gt; 2 Then
      WriteLine "You need to specify input and output files."
      WScript.Quit
  End If
  
  inputFile = WScript.Arguments(0)
  outputFile = WScript.Arguments(1)
  
  Set objFso = CreateObject("Scripting.FileSystemObject")
  
  If Not objFso.FileExists( inputFile ) Then
      WriteLine "Unable to find your input file " &amp; inputFile
      WScript.Quit
  End If
  
  If objFso.FileExists( outputFile ) Then
      WriteLine "Your output file (' &amp; outputFile &amp; ') already exists!"
      WScript.Quit
  End If
  
  WriteLine "Input File:  " &amp; inputFile
  WriteLine "Output File: " &amp; outputFile
  
  Set objPPT = CreateObject( "PowerPoint.Application" )
  
  objPPT.Visible = True
  objPPT.Presentations.Open inputFile
  
  Set objPresentation = objPPT.ActivePresentation
  Set objPrintOptions = objPresentation.PrintOptions
  
  objPrintOptions.Ranges.Add 1,objPresentation.Slides.Count
  objPrintOptions.RangeType = ppShowAll
  
  ' Reference for this at http://msdn.microsoft.com/en-us/library/office/ff746080.aspx
  objPresentation.convert2(output)
  
  objPresentation.Close
  ObjPPT.Quit
  </code></pre>