Sind bestimmte Dateien in Excel bereits 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,

ich bin mit der VBA-Programmierung zum Aufruf anderer Anwendungen nicht so firm. Bei mir habe ich das Problem unter Win98, EXCEL97, das EXCEL ggf ein 2. Mal gestartet wird, wenn ich eine EXCEL-Datei zum Beispiel von Word aus starten möchte.

Falls, nachdem die VBA-Prozedur geprüft hat ob EXCEL beim Anwender bereits aktiv, es bei deiner Konfiguration möglich ist von Access aus eine weitere EXCEL-Datei im aktiven Excel des Anwenders zu öffnen, dann wäre folgende Lösung im Schritt 2 deiner Logik möglich:

Per VBA wird eine EXCEL-Datei geöffnet, die beim Öffnen automatisch die Prüfung durchführt und ggf. die beiden Dateien schließt. Am Ende wird diese Datei wieder geschlossen. Bei mir hat das lokal innerhalb EXCEL funktioniert. Ich bin mir aber nicht 100% sicher, ob EXCEL dabei Datenmüll ansammelt, weil die Datei sich selber wieder schließt bevor das Makro abgeschlossen wird. Dadurch ist es evtl möglich, dass Resourcen in EXCEL nicht wieder freigegben werden. So schaut der Code für das Open-Ereignis der Datei aus:

Private Sub Workbook\_Open()
'
' ZweiDoksSchliessen Makro
' Makro erstellt am 10.09.05 von FCS
 Dim Dokument As Workbook
 Application.ScreenUpdating = False
 For Each Dokument In Application.Workbooks
 If Dokument.Name = "TestDaten1.xls" Or Dokument.Name = "TestDaten2.xls" Then
 Dokument.Close SaveChanges:=False
 End If
 Next Dokument
 Workbooks("Dok01\_Dok02\_Schliessen.xls").Close SaveChanges:=False
 Application.ScreenUpdating = True
End Sub

ggf noch eine kleine Meldung einbauen, die den Anwender aufmerksam macht, und die Datei als „ausgeblendet“ einstellen.
Zum Testen muß man den Makro-Virenschutz aktivieren, so dass man ggf. das Makro nicht ausführt, um Änderungen an der Datei vorzunehmen.

Wahrscheinlich geht das Ganze auch eleganter via API oder Variablen in der Windows/EXCEL Systemumgebung, aber in dem Bereich kenne ich mich leider nicht aus.

Gruß
Franz

[…]

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

Danke Franz
Hallo Franz,

vielen Dank für Deine Lösung, hat nach einigen Anpassungen funktioniert.

Danke Peter