2014-02-13 211 views
1

我是PS的總noob,並且在嘗試將CS​​V文件的文件夾保存到XLS或XLSX時遇到問題。我可以做一個單一的文件,但不能解決我做錯了多次。將多個CSV文件保存爲XLS

CLS 
$path = "H:\My Documents\" 
$files = Get-ChildItem $path -include *.csv -recurse 
echo $files 
foreach($file in $files) { 
$objExcel=New-Object -com "Excel.Application" 
$objWorkbook=$objExcel.workbooks.open($file) 
$objWorksheet=$objWorkbook.Worksheets.Item(1) 

#insert COUNTIF formula into cell A8 
$strFormula = "=COUNTIF(I6:I1000," + [char](34) + ">0" + [char](34) + ")" 
$objExcel.Cells.Item(1, 8).Formula = $strFormula 

#Save as XLS 
$xlout=$file.Replace('.csv','xlsx') 
$objWorkbook.SaveAs($xlOut,51) 

$objWorkbook.Close() 
$objExcel.Quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) 
} 

有人可以幫我嗎?

回答

2

嗯,我沒有看到任何根本性的錯誤,但它可能與快速連續的Excel打開和關閉有關的問題。嘗試在打開和關閉Excel的時間範圍內移動循環。

CLS 
$path = "H:\My Documents\" 
$files = Get-ChildItem $path -include *.csv -recurse 
echo $files 
$objExcel=New-Object -com "Excel.Application" 
foreach($file in $files) { 
    $objWorkbook=$objExcel.workbooks.open($file) 
    $objWorksheet=$objWorkbook.Worksheets.Item(1) 

    #insert COUNTIF formula into cell A8 
    $strFormula = "=COUNTIF(I6:I1000," + [char](34) + ">0" + [char](34) + ")" 
    $objExcel.Cells.Item(1, 8).Formula = $strFormula 

    #Save as XLS 
    $xlout=$file.FullName.Replace('.csv','.xlsx') 
    $objWorkbook.SaveAs($xlOut,51) 

    $objWorkbook.Close() 
} 
$objExcel.Quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) 

編輯:
我更新$ xlout拉動全名元素,並固定它的更換,因爲它正在失去.,基本改變「somefile.csv」到「somefilexlsx」。

+0

不幸運 - 我得到: 例外調用「2」參數替換爲「無法找到指定的文件」。 在線:15 char:5 + $ xlout = $ file.Replace('。csv','xlsx') + ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:FileNotFoundException – Dylan

+0

使用「2」參數調用「SaveAs」的異常:「該文件請嘗試執行以下操作之一: •確保指定的文件夾存在 •確保包含文件的文件夾不是隻讀的 •確保文件名不包含以下任何一項字符:< >?[]:|或* ?確保文件/路徑名稱不超過218個字符。「 – Dylan

+0

在線:16 char:5 + $ objWorkbook.SaveAs($ xlOut,51) + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:ComMethodTargetInvocation – Dylan