Powershell-Excel-Aktualisierung schlägt fehl mit "Anruf wurde von Angerufenen abgelehnt", wenn .visible = $ false

8

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:

  1. Hinzufügen von Start-Sleep 30 zwischen dem Erstellen des Excel-Objekts und dem Festlegen der sichtbaren Eigenschaft
  2. Einstellung sichtbar vor DisplayAlerts
  3. Ich wünsche mir wirklich, dass es einfach funktioniert

Irgendwelche Ideen?

    
Ethan 08.06.2015, 20:03
quelle

2 Antworten

2

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:

%Vor%

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:

%Vor%     
Mathias R. Jessen 15.06.2015, 14:50
quelle
1

Ich würde einen DoEvents -Block hinzufügen:

%Vor%

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).

    
David T. Macknet 16.06.2015 20:17
quelle

Tags und Links