Ich hatte dieses Problem schon lange und ignorierte es aus Faulheit, aber jetzt muss ich eine Lösung finden. Ich habe ein Skript, das das Aktualisieren einer großen Anzahl von Excel-Dokumenten automatisiert. Das funktioniert gut und dandy, es schlägt jedoch fehl, wenn die Visible-Eigenschaft auf Arbeitsmappen, die auf einer Netzwerkfreigabe gespeichert sind, auf false festgelegt ist.
Um es noch einmal zu wiederholen: Die Aktualisierung mit der Eigenschaft visible, die auf false gesetzt ist, funktioniert für LOCAL-Dateien einwandfrei, aber jede Arbeitsmappe, die an einem Speicherort gespeichert ist, schlägt mit dem Fehler "Anruf wurde von Angerufenen abgelehnt" fehl. Alle Aktualisierungen funktionieren einwandfrei, wenn die Eigenschaft visible auf true festgelegt ist.
Hier ist mein Code:
%Vor%Ich habe Folgendes versucht:
Irgendwelche Ideen?
Es scheint, dass RefreshAll()
nicht darauf wartet, dass die Aktualisierung im Hintergrund mit Visible = $False
set erfolgreich ist.
Führen Sie eine künstliche Verzögerung zwischen RefreshAll()
und Save()
ein, etwa so:
Alternativ können Sie das RefreshAll()
möglicherweise auch synchron ausführen, indem Sie BackgroundQuery = $False
für alle Abfragetabellen in Ihrer Arbeitsmappe festlegen, wie in dieser Antwort zu einer ähnlichen Frage vorgeschlagen:
Ich würde einen DoEvents
-Block hinzufügen:
Dies ermöglicht der Warteschlange, durch alles, was Sie Excel gesagt haben, zu tun & amp; dann zurück zur Skriptausführung. Eine andere Sache wäre, UserControl = false
so zu setzen, dass Excel nicht einfach versteckt ist, sondern eindeutig nicht in der Lage ist, auf Ereignisse zu reagieren.
Zu guter Letzt kann es sein, dass Sie Visible
einstellen, nachdem Sie andere Eigenschaften festgelegt haben - es kann vorkommen, dass Excel auf das sichtbare Ereignis reagiert, indem es ein paar andere Dinge umschaltet (erinnern Sie sich nicht daran, aber etwas in meinem Hinterkopf sagt, dass dies der Fall ist oder früher war).
Tags und Links excel powershell com