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( xlWorkbookDefault
) here
。 其他两个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)