Sind in Excel bestimmte Dateien geöffnet?

Hallo,

vielleicht könnt Ihr mir bei folgendem Problem (kurzfristig) weiterhelfen. Aus einer Access Datenbank exportiere ich bestimmte Daten in eine Excel Hilfstabelle und rufe dann per Access eine Exceltabelle auf, die auf diese (aktuelle) Hilfstabelle zugreift und mir dann die Daten als Diagramm anzeigt.

Das ist alles kein Problem, weil gelöst und geht.

Nur leider haben meine User oft Excel noch offen und bei der Anzeige eines anderen Datensatzes, wenn in Excel immer noch die Anzeige des vorherigen Datensatzes aktiviert ist , ist die Hilfstabelle bereits vorhanden und geöffnet (und damit wird natürlich ein Fehler ausgelöst und das Diagramm auch).

Die einfache Lösung (die ich derzeit betreibe) sieht so aus, dass ich überprüfe, ob Excel gestartet ist, fallls ja fordere ich die User auf, Excel zu schließen und dann den Befehl zu wiederholen.

AppActivate „Microsoft Excel“, True
MsgBox „Excel ist bereits gestartet. Bitte schliessen Sie Excel und wiederholen Sie dann den Befehl“

Das funktioniert auch, aber leider haben die User auch mal Exceltabellen in Bearbeitung, die sie jetzt gerade noch nicht speichern oder schließen wollen, deshalb will ich von der Logik au folgendes hinaus:

  1. ist Excel geöffnet, wenn nein,weitermachen
  2. Ist Excel geöffnet, wenn ja :
    a.) sind die 2 Dateien geöffnet in Excel, wenn nein weitermachen
    b.) sind die 2 Dateien geöffnet in Excel, wenn ja diese Dateien per Programm ohne speichern schließen, weil an diesen Tabellen die User nichts speichern können und dann weitermachen

Um dies zu realisieren, fehlt mir nur ein Befehl mit dem ich feststellen, ob einem geöffneten Excel zusätzlich bestimmte Dateien bereits geöffnet sind.

Danke für jede Hilfe oder Lösungsansatz
(gegen die Regeln (Mehrfachposting) von wer-weiss-was, werde ich dies auch im Excelforum posten, weil ich mit einem Lösungsansatz per Excel und VBA ebenfalls klarkomme – ich hoffe, man verzeiht mir das Mehrfachposting.

Danke im Voraus für Eure Bemühungen

Peter

Hallo Peter,

probier’s mal mit:

Aufruf: call isopenthenclose(„Exceldatei.xls“)

Sub IsOpenThenclose(DateiName As String)
Dim wb As Workbook
For Each wb In Application.Workbooks
If UCase(wb.Name) = UCase(DateiName) Then
Application.DisplayAlerts = False
wb.close
Exit Sub
End If
Next wb
End Sub

Ich habe es nicht ausprobiert, aber so sollte es gehen.

Gruß Silke

Danke Silke
Hallo Silke,

ganz hat es nicht funktioniert, aber der Ansatz war so gut, dass ich nach einigen Anpassungen das Problem lösen konnte.

Danke Peter