2017-04-14 12 views
0

以下のコードを使用して、指定されたディレクトリ内のすべてのExcelファイルを変換します。 1つのファイルをcsvに変換しようとすると意図したとおりに動作しますが、すべてのExcelファイルをcsvに変換しようとすると例外がスローされず、ファイルは変換されません。複数のExcelファイルをCSV形式に変換するためのpowershellスクリプトを発行

$path = get-childitem -path "\\sharedrive\excelfiles\" -filter *.xlsx 

foreach ($file in $path) 
{ 

$Excelfilename = $file.fullname 
$CSVfilename = "" + $file.Basename 

$xlCSV=6 

$Excel = New-Object -comobject Excel.Application 
$Excel.Visible = $False 
$Excel.displayalerts=$False 
$Workbook = $Excel.Workbooks.Open($ExcelFileName) 
$Workbook.SaveAs($CSVfilename,$xlCSV) 
$Excel.Quit() 

} 

答えて

0

私は前にこの同じ問題に遭遇してきており、このTechNetの記事は非常に有用であった:https://technet.microsoft.com/en-us/library/ff730962.aspx

基本的にはあなたが右のすべてをやっているが、.Quit()メソッドは、まさにあなたではありませんそれはプログラムを削除してからcomオブジェクトを削除してから探しています。 1つのレイヤーをさらに移動して、.NET Frameworkを呼び出して、以下のようにCOMオブジェクトを解放し、$ Excel変数を解放する必要があります。

$Excel.Quit()

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)

Remove-Variable $Excel

これは、あなたが探しているものをあなたに与え、適切な環境をクリーンアップ、背中をループにあなたをできるようにし、すべての変更を加える必要があります。 CSVの

関連する問題