Ich habe versucht, ein Skript in Windows-Powershell schreiben, die einen Wert aus einer Arbeitsblattzelle und ändert dann den Wert eines Slicer mit ihm. Allerdings sollte der Teil, der mich stopft, der einfachste sein. Immer wenn ich versuche, auf den Arbeitsblatt-Layer in Microsoft Excel zuzugreifen, erhalte ich einen Fehler, der besagt: "Sie können eine Methode für einen nullwertigen Ausdruck nicht aufrufen."Zugriff auf Arbeitsblatt-Ebene von Excel über Powershell
Ich habe verschiedene Möglichkeiten ausprobiert, ein aktives Arbeitsblatt zu deklarieren, Arbeitsblätter hinzuzufügen, auf vorhandene Arbeitsblätter zu verweisen, jeder Versuch, auf Arbeitsblätter zuzugreifen, gibt denselben Fehler. Aus diesem Grund kann ich nur bis zu 6 Codezeilen codieren, bevor es fehlschlägt. Hier ist ein Beispiel für Code, der in der letzten Zeile fehlschlägt.
$FilePath = "C:\Users\mudkip\desktop\slicer\TestMe.xlsx"
$SheetName = "Sheet1"
$objExcel = New-Object -Com "Excel.Application"
$objExcel.Visible = $true
$workbook = $ObjExcel.workbooks.open($filePath)
$worksheet = $workbook.sheets.item($SheetName)
Andere Linien wie
$WorksheetA = $Workbook.Worksheets.add()
verursachen auch die gleiche null bewertet Ausdruck Versagen. Wenn irgendjemand eine Ahnung hat, was die Arbeitsblattschicht dazu bringen könnte, diesen seltsamen Widerstand gegen jede Art von Interaktion zu zeigen, würde ich es gerne hören. Ich bin völlig ratlos, warum kopierter Code, der für so viele andere Benutzer funktioniert, versagt, wenn ich es versuche um es zu benutzen. Ich verwende Windows 8.1 Enterprise, Microsoft Excel-Version 2013. Running Powershell über die Windows PowerShell ISE.
Wenn Sie diese Datei manuell öffnen (d. H. Doppelklicken), werden Warnungen, Warnungen usw. angezeigt? Vielleicht werden Sie zur Sicherheit aufgefordert oder um Links zu aktualisieren. Sind Sie sicher, dass "Sheet1" existiert? (Versuchen Sie, stattdessen auf den Index zu verweisen?) Oder ist die Arbeitsmappe geschützt? Sie können in der Regel keine Blätter für eine geschützte Datei hinzufügen. –
Das sind alles gute Dinge zu überprüfen, leider hat keiner von ihnen für mich panning. Sheet1 ist tatsächlich vorhanden, und das Öffnen des Arbeitsblatts funktioniert normal (Doppelklick) und durch isolierte Powershell-Zeilen. Das Blatt ist nicht geschützt, obwohl es heißt, dass Datenverbindungen deaktiviert wurden. Ich hatte den Eindruck, dass dies für sql-server/cube-Verbindungen war, und die Aktivierung behebt das Problem nicht. – Mudkip
Wenn Sie '$ workbook | get-member "zeigt es" sheets "und/oder" worksheets "als verfügbare Mitglieder der Workbook-Klasse an? –