Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
364to368
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
364to368
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

bestimmte Dateien schließen, wenn........

bestimmte Dateien schließen, wenn........
20.01.2004 08:19:17
Jonathan
liebes Forum,
ich habe eine Datei (nennen wir sie DatA), über die mehrere andere geöffnet werden.
Nun möchte ich folgendes:
Wenn DatA geöffnet wird, soll geprüft werden ob irgendwelche anderen Excel-Dateien offen sind, wenn ja soll eine msgbox erscheinen, dass zuvor alle anderen Dateien geschlossen werden müssen, mit der Frage ob man die Dateien nun schließen möchte oder nicht. Sollte man JA drücken, sollen alle Datein geschlossen werden - immer mit der Frage ob gespeichert werden soll -, bei NEIN soll das Öffnen von DatA abgebrochen werden.
Nun noch folgendes:
sollte DatA geöffnet sein, soll auch nur das Öffnen von Dateien möglich sein, die über die DatA per Makro geöffnet werden. Bei allen anderen soll das öffnen per msgbox verweigert werden.

Ist das so verständlich?
Hoffe Ihr könnt mir helfen.........
Liebe Grüße
Jonathan

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Dateien schließen, wenn........
20.01.2004 09:52:16
Matthias G
Hallo Jonathan,
vielleicht ein etwas schwieriges Unterfangen, wenn man mit VBA nicht vertraut ist...
Ich versuch's trotzdem:
Voraussetzungen:
1. Jede Mappe die zum Öffnen erlaubt ist, muss identifizierbar sein. z.B: durch einen best. Zellinhalt in einer bestimmten Zelle auf einem best. Blatt. (im Codebeispiel unten: Blatt1, Zelle A1 muss mit "Mappe" beginnen. Du kannst die Zelle auch ausblenden.
1. Jede Mappe (also sowohl "DatA" als auch die von dieser Mappe geöffneten) muss folgenden Code im Modul "DieseArbeitsmappe" haben:
Dim DatA_schliessen As Boolean

Private Sub Workbook_Deactivate()
Dim i As Integer
'Sub beenden, wenn nicht alle Fremdmappen geschlossen wurden
If DatA_schliessen Then Exit Sub
For i = Workbooks.Count To 1 Step -1
With Workbooks(i)
If Left(.Sheets(1).Range("A1").Value, 5) <> "Mappe" Then
MsgBox Workbooks(i).Name & " ist fremd kann nicht geöffnet werden, solange DatA aktiv ist!"
Workbooks(i).Close False
End If
End With
Next
End Sub


Private Sub Workbook_Open()
Dim i As Integer
DatA_schliessen = False
For i = Workbooks.Count To 1 Step -1
If DatAMappe(Workbooks(i)) = False Then
MsgBox Workbooks(i).Name & " ist fremd und wird geschlossen!"
Workbooks(i).Close
End If
Next
'Prüfen ob alle Fremdmappen geschlossen wurden:
If AnzahlFremdmappen > 0 Then
MsgBox "Sie haben nicht alle Mappe geschlossen! DatA wird beendet!"
DatA_schliessen = True
ThisWorkbook.Close False
End If
End Sub

Function AnzahlFremdmappen() As Integer
Dim i, a As Integer
a = 0
For i = 1 To Workbooks.Count
If DatAMappe(Workbooks(i)) = False Then a = a + 1
Next i
AnzahlFremdmappen = a
End Function

'Funktion zum Identifizieren erlaubter Mappen
Function DatAMappe(wb As Workbook) As Boolean
If Left(wb.Sheets(1).Range("A1"), 5) = "Mappe" Then
DatAMappe = True
Else
DatAMappe = False
End If
End Function

Das Beispiel funktioniert bei mir ganz gut, wenn Du noch Probleme hat, melde Dich.
Viele Grüße,
Matthias
Anzeige
AW: bestimmte Dateien schließen, wenn........
20.01.2004 10:04:59
Jonathan
Guten morgen Matthias!
Das sieht sehr logisch aus!!!
(Punkt 1 habe ich schon mal umgesetzt gehabt, um mappen NUR über DatA zu öffnen. Habe in Zelle A1 eine 1 geschrieben (wurde immer automatisch bevor gespeichert wird gesetzt) und dann mit code geprüft ob dort eine 1 steht, wenn ja Datei schließen, Wenn man die Datei über DatA geöffnet hat, hat diese in Zelle A1 eine 0 geschrieben, so wurde die geffnete Datei nicht mehr geschlossen - falls dich interessiert :-))
Kurz:
der gesammte Code in diesearbeitsmappe?

PS:
auch von mir ein Danke für die Hilfe für Pia - hat auch mir sehr weitergeholfen!!! :-)
Anzeige
AW: bestimmte Dateien schließen, wenn........
20.01.2004 10:20:06
Matthias G
Hallo Jonathan,
ja, der gesamte Code in "DieseArbeitsmappe", incl "Dim Data_schliessen As ...".
Und zwar in JEDE Arbeitsmappe, die geöffnet werden darf bzw. jede, die beim Öffnen einer Fremddatei aktiv ist (Prüfung wird beim Deaktivieren der Mappe ausgelöst).
Das gäbe ein Problem, wenn die Mappen auch über VBA erzeugt würden...
Du schreibst:
"Wenn man die Datei über DatA geöffnet hat, hat diese in Zelle A1 eine 0 geschrieben, so wurde die geffnete Datei nicht mehr geschlossen - falls dich interessiert :-))"
Muss ich das verstehen, gibt's da ein Problem? ;-)
Gruß,
Matthias
Anzeige
AW: bestimmte Dateien schließen, wenn........
20.01.2004 10:23:56
Jonathan
nein, musst du nicht verstehen........
wollte damit nur meine lösung für ein vergangenes Problem erläutern, weil ich deine idee dort schon ähnlich umgesetzt hatte - war aber nur nebenbei und nicht wichtig!!! :-)
AW: bestimmte Dateien schließen, wenn........
20.01.2004 10:18:37
Jonathan
Hallo nochmal!
ich habe es jetzt getestet.
folg. Zeile zeigt er mir als fehler:
If Left(.Sheets("Makro Fehler").Range("A1").Value, 5) <> "Mappe" Then
Makro Fehler heißt das sheet in dem das Wort mappe stehen sollte........
was ich aber nicht verstehe........
auch wenn nur die eine datei geöffnet werden soll, erscheint die meldung, dass nicht alle geschlossen sind und das DatA beendet wird....... woher weiß er welche DatA ist und warum denkt er, diese wäre geöffnet?
Zudem DatA geöffnet bleiben Muss!! Sorry, da hatte ich mich nicht klar ausgedrückt...... alle anderen sollen aber geschlossen werden.......
mhhhhhhh.......
Jonathan
Anzeige
AW: bestimmte Dateien schließen, wenn........
20.01.2004 10:25:38
Matthias G
Hallo Johnathan,
der Befehl
If Left(.Sheets("Makro Fehler").Range("A1").Value, 5) <> "Mappe" Then...
setzt voraus, dass ein Blatt mit Namen "Makro Fehler" existiert. Wenn nicht, kommt es zum Fehler!
Das könntes Du so abfangen:

Function DatAMappe(wb As Workbook) As Boolean
On Error GoTo falscheMappe
If Left(wb.Sheets("Makro Fehler").Range("A1"), 5) = "Mappe" Then
DatAMappe = True
Else
DatAMappe = False
End If
Exit Function
falscheMappe:
On Error GoTo 0
DatAMappe = False
End Function

Gruß
Matthias
AW: bestimmte Dateien schließen, KORREKTUR
20.01.2004 10:26:53
Matthias G
sorry, habe ein On Error Goto 0 vergessen:

Function DatAMappe(wb As Workbook) As Boolean
On Error GoTo falscheMappe
If Left(wb.Sheets("Makro Fehler").Range("A1"), 5) = "Mappe" Then
DatAMappe = True
Else
DatAMappe = False
End If
On Error GoTo 0
Exit Function
falscheMappe:
On Error GoTo 0
DatAMappe = False
End Function

Anzeige
AW: bestimmte Dateien schließen, KORREKTUR
20.01.2004 10:38:20
Jonathan
Jo, super DANKE!!!!
hast du meinen letzten Beitrag schon gelesen?
> Dass DatA geöffnet bleiben muss.....
AW: bestimmte Dateien schließen, wenn...
20.01.2004 10:45:47
Matthias G
**nixversteh***
was meinst Du damit?
Matthias
AW: bestimmte Dateien schließen, wenn...
20.01.2004 10:55:57
Jonathan
:-(
ich hate ja geschrieben, dass DatA geöffnet bleiben muss. Dein Code möchte diese aber schließen, oder?
Also:
Ich habe DatA
> darüber werden Dateien B-X geöffnet
Das Öffnen der Dateien B-X ist nur über DatA möglich (das hatte ich eben sehr umständlich versucht zu erklären ;-))
Wenn ich DatA öffne und es sind andere Dateien geöffnet soll DIESE wieder geschlossen werden.
Wenn ich DatA dann mal geöffnet habe und über diese Dateie B-X öffne, soll DatA geöffnet bleiben.
Wenn man aber bei geöffneter DatA versucht andere Dateien (andere als B-X) zu öffnen, soll dieses nicht möglich sein.

Ich weiß, ich verlange sehr viel, aber es wäre echt super wenn Du mir helfen könntest!!!!!!

Jonathan
Anzeige
AW: bestimmte Dateien schließen, wenn...
20.01.2004 11:14:06
Matthias G
Hallo Jonathan,
auweia ich weiß nicht, ob ich dazu heute noch kommen... mein Sohn kommt gleich von der Schule...
Also:
> Das Öffnen der Dateien B-X ist nur über DatA möglich (das hatte ich eben sehr umständlich versucht zu erklären ;-))
Das ist schwierig... muss ich mir mal durch den Kopf gehen lassen...
-------------------------------
> Wenn ich DatA öffne und es sind andere Dateien geöffnet soll DIESE wieder geschlossen werden.
Achso, ich dachte, DatA soll dann versuchen, die fremden Dateien zu schließen?
-------------------------------
> Wenn ich DatA dann mal geöffnet habe und über diese Dateie B-X öffne, soll DatA geöffnet bleiben.
Das müsste ja schon so sein, wenn Du die Datei B-X richtig identfizierbar machst
-------------------------------
> Wenn man aber bei geöffneter DatA versucht andere Dateien (andere als B-X) zu öffnen, soll dieses nicht möglich sein.
Das müsste auch schon klappen.
-------------------------------

Naja, ich muss jetzt Schluss machen, kann erst morgen nachmittag wieder ins Forum schauen.
Du kannst Dich ja auch per mail an mich wenden, wenn ich ne Zeitlang nicht mehr auftauche. (Mailadresse in der Profilliste)

Viel Erfolg bis dahin,
Matthias G
Anzeige
AW: bestimmte Dateien schließen, wenn...
20.01.2004 11:47:26
Jonathan
Danke schonmal!!!!
> Das Öffnen der Dateien B-X ist nur über DatA möglich (das hatte ich eben sehr umständlich versucht zu erklären ;-))
Das ist schwierig... muss ich mir mal durch den Kopf gehen lassen...
_____________
das habe ich schon programmiert.. also nicht den kopf zerbrechen.
wie folgt:
-DatB soll geöffnet werden
-öffnen nur möglich durch DatA
in DatB steht in einer best. Zelle die Zahl 1 -> diese wird immer bevor gespeichert wird neu gesetzt
> steht in der Zelle die Zahl 1, wird die Datei wieder geschlossen
beim öffnen der DatB über DatA schreibt DatA automatisch in die Zelle der DatB die Zahl 0 (deaktiviert vorher alle Makros der DatB; schreibt die Zahl 0; aktiviert die Makros)
> dadurch ist die Vorraussetzung für das Schließen der DatB (Zellenwert = 1) nicht gegeben und sie bleibt somit geöffnet

Das war auch das, was ich versuchte zu erklären.

Dann sag ich mal bis morgen!
Liebe Grüße
Jonathan
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige