Powerbook中的Excel workbooks.saveas()错误

我试图将.xls文件转换为.xlxs我尝试了许多变化的代码,但每次我都面临这个错误信息:

除了“SaveAs»avec«2»的说法外:”LaméthodeSaveAs de la classe Workbook aéchoué。 »AucaractèreC:\ temp \ xlsx.ps1:18:6

  • 试试{$ opendoc.saveas($ basename,$ saveFormat)}
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • CategoryInfo:NotSpecified:(:) [],MethodInvocationException
    • FullyQualifiedErrorId:ComMethodTargetInvocation

这是我的代码:

$excel = new-object -comobject excel.application $excel.Visible = $false $saveFormat = "xlOpenXMLWorkbook"; ls c:\temp\*.xls | %{ $opendoc = $excel.workbooks.open($_.FullName) $excel.DisplayAlerts =$false $basename = $_.basename try{ $opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges") # tried this one and got same error : $opendoc.saveas($basename, $saveFormat)} } catch{ $opendoc.close();$excel.quit() $_ } $opendoc.close(); } $excel.quit() 

你知道工作食谱吗?

传递给SaveAs方法的常量通常表示数值,而不是string。 在你的情况下,第二个参数可能应该是51( xlWorkbookDefaulthere 。 其他两个string( "xlNoChange" , 应该是1 , "xlLocalSessionChanges" 应该是2 )也是一样的。 您需要使用数字值,或者自己定义常量,例如:

 $xlWorkbookDefault = 51 $xlNoChange = 1 $xlLocalSessionChanges = 2 

而且,你不能使用$null作为保留默认值的参数。 使用[Type]::Missing来代替。

改变这个:

 $opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges") 

进入这个:

 $opendoc.SaveAs($basename, 51, [Type]::Missing, [Type]::Missing, $false, $false, 1, 2)