我正在尝试将.xls文件转换为.xlxs
我尝试了此代码的许多变体,但每次遇到此错误消息时:



这是我的代码:

$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 方法的常量通常表示数字值,而不是字符串。在您的情况下,第二个参数可能应为 xlWorkbookDefault ,为51(here)。其他两个字符串("xlNoChange"should be 1)也是如此。您需要使用数字值,也可以自己定义常量,例如:

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

另外,不能将"xlLocalSessionChanges"用于应保留默认值的参数。请改用should be 2

更改此:
$opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges")

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

关于excel - Powershell中的Excel workbooks.saveas()错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25288372/

10-10 04:00