2017-07-11 25 views
2

Ich versuche, einen Wert für eine Excel-Zelle durch Powershell festzulegen, und ich erhalte den Fehler HRESULT: 0x800A03EC, die das Skript vorzeitig beendet. Mir ist klar, dass es andere Fragen in Bezug auf diesen Fehler oder Ähnliches gab, aber keine der Lösungen hat für mich funktioniert, also gehe ich davon aus, dass dies ein separates Problem ist.Ausnahme von HRESULT: 0x800A03EC beim Festlegen des Wertes einer Zelle (über Powershell)

Ich habe mein Skript zuvor ausgeführt, aber es gibt nur jetzt diesen Fehler.

Relevante Code:

$Output_Location = "Z:\Documents\Powershell" 
$Excel_File = "Report.xlsx" 
$ExcelWorkBook = $Excel.Workbooks.open("$Output_Location\$Excel_File") 
$MainSheet = $ExcelWorkBook.worksheets.Item("Report") 
$Sheet1 = $ExcelWorkBook.worksheets.Item("Sheet1") 
$Sheet1.name = "Statistics" 
$StatisticsSheet = $ExcelWorkBook.worksheets.Item("Statistics") 

$row = 3 
$column = 2 
$StatisticsSheet.Cells.Item(2,2)= 'KeyToMatch' 
$StatisticsSheet.Cells.Item($row,$column) = '=COUNTIFS(Report!E2:E200000,B$3,Report!G2:G200000,"UserMailbox")' 
$row++ 
$StatisticsSheet.Cells.Item($row,$column) = '=COUNTIFS(Report!E2:E200000,B$3,Report!G2:G200000,"RemoteUserMailbox")' 
$row++ 

Die Code-Lasten bis die Excel-Datei und trifft auf die Zeile, die die Zelle setzt (2,2)/(B, 2) auf seinen Wert gut. Wenn der Code jedoch die Zeile erreicht, die den Zellenwert auf die Zeile unterhalb von KeyToMatch (B, 3) setzt, wird der Fehler 0x800A03EC ausgelöst.

Voll Fehler:

Exception from HRESULT: 0x800A03EC 
At Z:\Documents\Powershell\Reporting\Report.ps1:113 char:1 
+ $StatisticsSheet.Cells.Item($row,$column).value = '=COUNTIFS(Report! ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : OperationStopped: (:) [], COMException 
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException 

ich versucht habe Abstand aus der ‚=‘ zwischen der Zelle und Wert, ich habe auch versucht, die folgenden:

$StatisticsSheet.Cells.Item($row,$column).value = ... 
$StatisticsSheet.Cells.Item($row,$column).value2 = ... 
$StatisticsSheet.Cells.Item($row,$column).text = ... 
$StatisticsSheet.Cells.Item($row,$column).formula = ... 

ich eine beliebige Anzahl von auf Kommentar kann Zeilen, die den Wert der Zelle auf eine Formel setzen, und der erste, der dies versucht, wird den erwähnten Fehler auslösen.

Wie ich schon sagte, ich habe dieses Skript schon einmal ausgeführt, aber es gibt mir nur Probleme. Wie kann ich das beheben, damit der Code reibungslos funktioniert?

+0

Ihr Code funktioniert für mich auf Powershell 5.1 und Excel Fein 2013. Welche Versionen verwenden Sie? Haben Sie [diesen Beitrag] ausgecheckt (https://stackoverflow.com/questions/7099770/hresult-0x800a03ec-on-worksheet-range)? Ich sehe, dass Sie '.xlsx' in Ihrem Code haben, aber das ist nicht unbedingt das Dateiformat. Versuchen Sie es mit einem Bereich von 'E2: E2000', um zu sehen, ob der gleiche Fehler auftritt. Außerdem kann '$ Excel.Visible = $ true' hilfreich für das Debugging sein. – gms0ulman

+0

@ gms0ulman Ich benutze Powershell 5.0.10586.117 und Excel 2013. Wenn ich Eigenschaften auf der (nicht abgeschlossenen) automatisierten Excel-Datei (nach dem Programm beendet), sagt es Dateityp von .xlsx. Ich benutze $ Excel.visible = $ true, habe es aber nicht eingefügt, um Unordnung in meiner Frage zu speichern - so weiß ich, dass das Programm die Automatisierung teilweise abschließt. Ich habe die Schritte in der verknüpften Frage ausgeführt, aber beim erneuten Testen dasselbe Ergebnis erzielt. Irgendeine Idee, warum es diesen Fehler auf meinem System wirft? –

+0

@ gms0ulman Ich testete mit Bereich E2: E2000 und es wurde der gleiche Fehler auf der gleichen Linie geworfen. –

Antwort

2

von Frage Verschoben Lösung zu beantworten:

RESOLUTION:

To resolve this issue, in the text I assigned to the cell, I replaced single quotes with double quotes, and because of this, had to escape the '$' and ' " ' characters. I also ADDED single quotes around "Report" (The table name from which data is being pulled) each time it came up within the text.

It ended up looking like this, and running fine:

$StatisticsSheet.Cells.Item($row,$column) = "=COUNTIFS('Report'!E2:E200000,B`$3,'Report'!G2:G200000,`"UserMailbox`")" 

Still not sure why this error occurred-the code had worked every week prior to this! Before changing the script and finding the resolution, I tested it on multiple machines (5+) and it threw the error mentioned in the title every single time.

Verwandte Themen