Ich muss Excel-Datei mit CorruptLoad
Parameterer von Powershell-Skript öffnen. Aber wenn ich es versuche, erhalte ich einen Fehler Exception calling "Open" with "15" argument(s): "open method workbooks class failed"
. Dieser Fehler tritt nur auf, wenn ich Open
mit allen 15 Argumenten aufrufen. Und wenn ich versuche, die gleiche Excel-Datei mit VB.net
Programm mit 15 Argumente oder mit Angabe von Wert des benannten Arguments CorruptLoad
zu öffnen, gibt es kein Problem!Fehler beim Öffnen Excel in Powershell
Ich verwende powershell v 4.0
, Office 2010 mit SP2 und .NET Framework 4.5.2
.
Hier ist mein powershell
Code:
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
try
{
$missing = [System.Type]::Missing
# $wb = $excel.Workbooks.Open("d:\temp\start_instrument.xls", $missing, $missing, $missing, $missing,
# $missing, $missing, $missing, $missing, $missing,
# $missing, $missing, $missing, $missing, $missing)
# $wb = $excel.Workbooks.Open("d:\temp\start_instrument.xls", $missing, $missing, $missing, $missing,
# $missing, $missing, $missing, $missing, $missing,
# $missing, $missing, $missing, $missing, 1)
$XlCorruptLoad = "Microsoft.Office.Interop.Excel.XlCorruptLoad" -as [type]
$wb = $excel.Workbooks.Open("d:\temp\start_instrument.xls", $missing, $missing, $missing, $missing,
$missing, $missing, $missing, $missing, $missing,
$missing, $missing, $missing, $missing, $XlCorruptLoad::xlRepairFile)
}
catch
{
Write $Error[0].ToString()
}
# some stuff
if ($excel -ne $null)
{
$excel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel) | Out-Null
$excel = $null
}
[System.GC]::Collect() | Out-Null
[System.GC]::WaitForPendingFinalizers() | Out-Null
Ich habe keine Ahnung, warum Fehler auftritt. Ich werde mich über alle Ratschläge und Annahmen freuen!
Wenn Sie verwenden müssen 'CorruptLoad' warum haben Sie es nicht in der Argumentliste angegeben? Sie haben es als "$ fehlt"? https://msdn.microsoft.com/en-us/library/office/ff193596.aspx. – Matt
@Matt, habe ich alle Varianten der Aufruf 'Open' Funktion versucht. Ich habe mein Codebeispiel geändert, um es anzuzeigen. – Indian
Danke für die Klarstellung. – Matt