Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anzeige ob andere Excel Datei geöffnet

Anzeige ob andere Excel Datei geöffnet
01.06.2022 16:56:13
Max_Danger
Hallo zusammen,
ich habe mal wieder eine Frage an die super Forengemeinde. :)
Ist es möglich in einer Excel Datei (1) eine Anzeige zu bekommen ob Excel Datei (2) geöffnet ist?
Ziel ist in einer Zelle angezeigt zu bekommen, ob die andere Datei offen oder geschlossen ist.
Ist so etwas umsetzbar?
VG
Max

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 17:22:05
ChrisL
Hi Max
Bitte die Frage bei Bedarf wieder als offen markieren.
Ich gehe davon aus, dass die Datei auf dem gleichen Rechner/Instanz geöffnet sein soll (oder eben nicht). Hierzu findest du im Netz diverse Lösungen auf Basis VBA.
Zur Abwechslung aber mal eine Variante per Formel:

=WENN(ISTFEHLER(INDIREKT("'C:\Pfad\[Mappe1.xlsx]Tabelle1'!$A$1"));"Datei zu";"Datei offen")
INDIREKT ist eine volatile Formel, die auf jede Änderung/Neuberechnung reagiert.
Generell eine Frage der Ausgangslage (gleicher Rechner oder nicht) und wie du dir die Aktualisierung vorstellst. Einen "Live-Push" sehe ich wenig realistisch. Wenn dann müsste man OnTime alle paar Minuten immer wieder aktualisieren. Solche permanent laufenden Prozesse finde ich persönlich ziemlich uncool. Aber es fehlt mir auch ganz generell die Fantasie, wozu man solch eine Info-Anzeige überhaupt bräuchte.
cu
Chris
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 17:56:20
Max_Danger
Hi Chris,
vielen Dank für Deine schnelle Antwort.
Der Anwendungszweck ist folgender.
Es gibt zwei Excel Dateien, welche auf den gleichen Datenpool zugreifen.
Wenn beide Excel Dateien geöffnet sind (unterschiedliche Rechner) dann sollen die Daten aufgeteilt werden, damit nicht beide Personen die gleichen Daten bearbeiten.
Daher wäre es hilfreich angezeigt zu bekommen, ob die andere Excel Datei auch gerade geöffnet ist.
Funktioniert dein Lösungsansatz auch bei zwei unterschiedlichen Rechnern?
Bei mir scheint es nicht zu funktionieren.
Die Dateien liegen beide auf dem Server (NAS).
Generell würde ich es gerne mit einer Formel und ohne VBA lösen.
Grüße
Max
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 19:16:15
ChrisL
Hi Max
Beide Lösungen funktionieren nur auf dem gleichen PC, also nicht was du suchst.
Ohne eine konkrete Lösung zu haben (darum als offen markiert), stochere ich trotzdem mal noch ein wenig weiter rum.
Grundsätzlich glaube ich, dass eine Lösung nur mit VBA denkbar ist. Entweder aus Mappe1 immer wieder Öffnungsversuche auf Mappe2 starten, um zu prüfen, ob die Datei besetzt ist. Oder beim Öffnen ein Cookie setzen, beim Schliessen wieder löschen.
Vielleicht gäbe es auch noch elegantere Alternativen, aber letztlich läuft alles darauf hinaus, dass du OnTime alle paar Sekunden/Minuten immer wieder und wieder ein Makro laufen lässt, um den Status der anderen Datei zu prüfen. Solche permanenten Hintergrundprozesse finde ich persönlich unschön.
Könntest du aus den beiden Dateien nicht eine einzige machen und diese einfach freigeben? Person A beginnt mit der Listenbearbeitung oben und Person B unten; man trifft sich in der Mitte :)
Welche Rolle spielt der "Datenpool" (reiner Import von externen Daten)?
cu
Chris
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 19:37:48
Max_Danger
Hi Chris,
danke für die Rückmeldung.
Also man könnte auch den Weg mit der ständigen VBA Abfrage gehen.
Die Datein aktualisieren sich eh schon in Endlosschleife, bis ein entsprechender Datensatz geladen ist.
Wenn das passiert stoppt die Aktualisierung und mann muss das Makro erneut starten.
Somit könnte ich die zusätzlich Abfrage da mit integrieren.
Wie müsste ich denn die Abfrage in VBA aufbauen, hast Du da eine Idee?
Leider verfüge ich nur über sehr sehr rudimentäres Wissen im VBA Bereich.
VG
Max
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 19:49:07
ChrisL
Hi Max
Die Dateien aktualisieren sich eh schon in Endlosschleife, bis ein entsprechender Datensatz geladen ist.
Wenn das passiert stoppt die Aktualisierung und man muss das Makro erneut starten.

Magst du mal den Code-Schnipsel zeigen, nur damit ich einen Eindruck bekomme.
Ich schaue dann morgen wieder rein.
cu
Chris
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 20:24:39
Max_Danger
Hi Chris,
klar gerne. :)

Sub StartMakro()
Dim dblPruefung As Double
Neustart:
dblPruefung = WorksheetFunction.Sum(Range("C10:H10"))
Datenactual
PivotRefresh
If WorksheetFunction.Sum(Range("C10:H10")) 
Das Makro "Datenactual" aktualisiert einfach alle Verbindungen und das Makro "PivotRefresh" anschließend die Pivot Tabellen.
Danke Dir! :)
VG
Max
AW: Anzeige ob andere Excel Datei geöffnet
02.06.2022 12:31:19
ChrisL
Hi Max
Ich blicke leider immer noch nicht ganz durch und die Katze lässt sich darum nicht am Schwanz packen, wie ich mir dies erhofft hätte.
Darum einfach mal die Idee mit den Cookies weiter verfolgt. Beim Öffnen von Datei1 wird eine leere Text-Datei erzeugt, beim Schliessen wieder gelöscht. Der Status-Check prüft, ob eine Cookie-Datei vorhanden ist oder nicht.
Datei 1 - Modul DieseArbeitsmappe

Private Sub Workbook_Open()
Call CookieSetzen
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call CookieLoeschen
End Sub
Datei 1 - Standardmodul

Public Const strCookie As String = "O:\Pfad\Datei1Offen.TXT"

Sub CookieSetzen()
Open strCookie For Output As #1
Close #1
End Sub

Sub CookieLoeschen()
Kill strCookie
End Sub
Datei 2 - Standardmodul

Public Const strCookie As String = "O:\Pfad\Datei1Offen.TXT"

Sub StatusCheck()
Worksheets("Tabelle1").Range("A1") = IIf(Dir(strCookie) = "", "Datei1 ist zu", "Datei1 ist offen")
End Sub
In deinen Loop in Datei 2 integrierst du den Makroaufruf:

Call StatusCheck
cu
Chris
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
02.06.2022 19:11:39
Max_Danger
Hallo Chris,
die Lösung ist genial und funktioniert tadellos.
Genau das habe ich gesucht.
Vielen vielen Dank :)
Grüße
Max
AW: Anzeige ob andere Excel Datei geöffnet
03.06.2022 00:23:51
Max_Danger
Hallo Chris,
ich habe noch eine ergänzende Frage zum Thema Cookie setzen.
Ich finde die Lösung sehr interessant und sie funktioniert wie gesagt auch hervorragend.
Im weiteren Projekt, wäre es für mich noch interssant zu sehen, was die andere Excel Tabelle gerade macht.
Hierzu folgender Aufbau...
Die beiden Excel Dateien sind 100% identisch, bis auf den Namen natürlich.
Jetzt müsste jeweils Datei 1 immer sehen, was bei Datei 2 in Tabelle 1 Zelle C7 & D7 steht und umgekehrt.
Da beide Dateien im Dauerloop laufen, stellt sich mir die Frage ob es möglich ist mittels Cookie die Information weiterzureichen?
Sprich die Datei 1 schreibt die benötigten Informationen ins Cookie und Datei 2 ruft diese ab und umgekehrt.
VG
Max
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
03.06.2022 10:36:18
ChrisL
Hi Max
Ich weiss spontant nicht, wie die Aktualisierung bei einer ganz normalen Verknüpfung läuft bzw. ob die andere Datei erst gespeichert werden müsst.
=[Mappe1.xlsx]Tabelle1!$C$7
Das müsstest du halt mal testen.
Ansonsten kannst du die Text-Datei schon auch mit Inhalt beleben.

Public Const strCookie As String = "C:\Users\CH00LNC\Desktop\Datei1Offen.TXT"

Sub TXTschreiben()
Open strCookie For Output As #1
Print #1, Worksheets("Tabelle1").Range("C7").Text
Close #1
End Sub

Sub TXTlesen()
Dim strZeile As String
Open strCookie For Input As #1
Line Input #1, strZeile
Close #1
MsgBox strZeile
End Sub
Der guten Ordnung halber weise ich darauf hin. Ich glaube du hast dich in irgendeiner komischen Struktur verrannt und machst jetzt Symptombekämpfung. Da für mich die Zusammenhänge undurchsichtig sind, kann ich dir nicht sagen, wie es besser geht. Aber ich bin einfach misstrauisch, weil deine Anliegen/Vorgehensweisen sehr ungewöhnlich sind.
cu
Chris
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
03.06.2022 19:17:00
Max_Danger
Hi Chris,
vielen Dank erst einmal für Deine großartige Hilfe.
Ja es kann durchaus sein, dass ich die Heransgehensweise optimieren kann.
Ich kenne mich leider nur mit Excel Formeln und Co. aus und nicht mit VBA.
Vielleicht denke ich daher zu kompliziert.
Zur Erläuterung meines Projekts.
Die Excel Datei ruft dauerhaft Daten aus einer MariaDB ab und prüft diese Datensätze auf ein bestimmtes Ereignis.
Wenn dieses Ereignis eintritt, stoppt das Makro und die entsprechenden Informationen werden dargestellt.
Jetzt möchte ich, dass zwei oder mehr Leute mit meiner Excel Datei arbeiten können.
Hierzu hatte ich folgende Idee...
Wenn ein Ereignis eintritt stoppt das Makro so lange bis die Datenmeldung abgearbeitet wurde und wird anschließend wieder manuell gestartet.
In der Zwischenzeit in der das Makro stoppt, können aber weitere Meldungen rein kommen.
Diese würde ich gerne in der zweiten/identischen Excel Datei darstellen.
Daher dachte ich der Lösungsanstz mit dem Makro ist ganz praktisch.
Das Makro zeigt mir an, an welchem Datensatz der andere User arbeitet.
Somit kann der Datensatz übersprungen/ausgeblendet werden.
Ich wüsste nicht, wie ich es ohne eine zwischengelagerte Datenbank oder so besser lösen könnte.
Zu deinem Lösungsansatz hab ich noch eine Frage.
Kann ich den Wert aus der anderen Excel Datei auch in einem Feld ausgeben anstatt als Message?
Ich möchte mit dem entsprechenden Wert weiter arbeiten, bzw. die entsprechende Filterung vornehmen.
VG
Max
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
05.06.2022 09:24:30
ChrisL
Hi Max
Worksheets("Tabelle1").Range("A1") = strZeile
Die Text-Datei könnte man auch mittels Abfrage/Query lesen und dann gleich mitaktualisieren.
Wahrscheinlich würde es sich anbieten, dass du innerhalb einer einzigen freigegebenen Mappe (oder Access) arbeitest. Jedenfalls sieht man, dass die Aufteilung auf verschiedene Mappen den Prozess erschwert.
Generell würde ich eher umdenken und die Arbeitsaufträge nicht im Voraus verteilen, sondern einzeln durch die Nutzer abholen lassen. Dabei auch überlegen, ob nicht der Einsatz eines echten Work-Flow Systems angebracht wäre, was z.B. das Weiterleiten eines Auftrages ermöglicht.
Viel mehr als das abstrakte Konzept bzw. die Idee kann ich hierzu jedoch nicht beitragen.
cu
Chris
Anzeige
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 17:25:11
GerdL
Hallo Max,
eine ungetestete Kurzform. Den Namen der Datei u. ggf. Endung musst du anpassen.

Dim WB As Workbook
On Error Resume Next
Set WB = Workbooks("Mappe2.xlsx")
On Error Goto 0
If Not WB Is Nothing Then
MsgBox WB.Name & " ist geöffnet!"
Else
MsgBox WB.Name & " ist nicht geöffnet!"
End If 
Gruß Gerd
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 18:12:33
Max_Danger
Hallo Gerd,
vielen Dank für die schnelle Antwort.
Wenn ich es richtig deutet funktioniert, das Makro auch nur bei Dateíen, welche auf dem gleichen PC laufen, oder?
In meinem Fall handelt es sich um Excel Dateien, welche im Netzwerk (NAS) liegen.
Ich möchte quasi sehen können, ob ein anderer PC im Netzwerk bereits eine bestimmte Excel Datei geöffnet hat.
VG
Max
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 20:03:01
onur
"Es gibt zwei Excel Dateien, welche auf den gleichen Datenpool zugreifen." - Da musst du ansetzen, wenn dieser Datenpool eine Exceldatei ist.
z.B. schreibt Rechner A in A1 der Datei beim Starten "RechnerA online", Rechner B entsprechend "RechnerB online" in B1, beim Schliessen der Datei das Selbe mit mit "offline". Und das kannst du dann überprüfen lassen.
AW: Anzeige ob andere Excel Datei geöffnet
01.06.2022 21:18:41
Max_Danger
Die Daten kommen in meine Fall nicht aus einer Excel Datei, sondern werden per ODBC aus einer MariaDB geladen.
das einzig Wahre ...
01.06.2022 20:48:59
Rudi
...ist in dem Fall eine Datenbank, z.B. ACCESS.
Gruß
Rudi
AW: das einzig Wahre ...
01.06.2022 21:20:28
Max_Danger
Da gebe ich Dir recht. Scheint mir aber noch komplexer umzusetzen, als die "Quick & Dirty" Lösung per VBA?!
Grüße
Max

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige