[英]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.