簡體   English   中英

Excel的Powershell腳本錯誤代碼

[英]Powershell script for Excel error code

我正在嘗試將具有多個工作表的Excel .xls文件轉換為Powershell 4.0的.csv文件。 我知道for循環中的SaveAs措辭不正確,並且錯誤指向第17行和字符9,我只是不知道如何解決它或如何解釋錯誤代碼0x800A03EC。

這是腳本:

Function ExportWSToCSV ($inputWorkbookPath, $outputFilePrefix, $outputDirectory)
{

    #Start Excel invisibly without pop-up alerts.
    $inputWorkbookPath = "R:\Unclaimed Property\NC State\Jun 2015\" + `
                         "NC_RAW_JUL1986thruMAR2013" + ".xls"

    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $false
    $excel.DisplayAlerts = $false

    #Open Excel file.
    $workBook = $excel.Workbooks.Open($inputWorkbookPath) 

    foreach ($workSheet in $workBook.Worksheets)
    {
        $n = $inputWorkbookPath + "_" + $workSheet.Name
        $workSheet.SaveAs($outputDirectory + $n + ".csv", 6)
    }
    $excel.Quit()
}

ExportWSToCSV -inputWorkbookPath "R:\Unclaimed Property\NC State\Jun 2015\NC_RAW_JUL1986thruMAR2013.xls" `
              -outputFilePrefix "output_" `
              -outputDirectory "R:\Unclaimed Property\NC State\Jun 2015\"

這是錯誤:

Exception calling "SaveAs" with "2" argument(s): "Exception from    HRESULT: 0x800A03EC"
At \\ncdfs1\documents$\ANDREWN\My Documents\PSscript_for_NC.ps1:17   char:9
+         $workSheet.SaveAs($outputDirectory + $n + ".csv", 6)
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [],  MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation

我強烈認為您的問題來自於路徑串聯邏輯。 讓我們從循環中查看以下代碼。

$n = $inputWorkbookPath + "_" + $workSheet.Name
$workSheet.SaveAs($outputDirectory + $n + ".csv", 6)

在您的示例調用中,我認為變量映射如下:

$inputWorkbookPath equals "R:\Unclaimed Property\NC State\Jun 2015\NC_RAW_JUL1986thruMAR2013.xls"
$workSheet.Name equals "Bagel" # I made that up.
$outputDirectory equals "R:\Unclaimed Property\NC State\Jun 2015\"

因此,您將嘗試將新文件名設置為:

R:\\ Unclaimed Property \\ NC State \\ Jun 2015 \\ R:\\ Unclaimed Property \\ NC State \\ Jun 2015 \\ NC_RAW_JUL1986thruMAR2013.xls_Bagel.csv

哪個看起來都不對。 如果您的循環中只有一行

$outputDirectory + $n + ".csv"

我想您會看到這個問題。 只是一些簡單的調試。

讓我們解決這個問題

首先猜測是,你只需要改變它的東西像這樣

$path = $outputDirectory + $workSheet.Name + ".csv"
$workSheet.SaveAs($path, 6)

在此問題的范圍之外,最好在保存之前檢查該路徑是否存在 這樣可以節省一些潛在的頭痛。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM