Zähler im Dateinamen beim merhfachen Öffnen
Betrifft: Zähler im Dateinamen beim merhfachen Öffnen
von: Robert Rühl
Geschrieben am: 21.10.2014 18:00:30
Hallo zusammen,
ich habe in Excel eine geschlossene Datenbank mit diversen Eingabeformularen und Reports erstellt. Es ist angedacht, dass die Kollegen ein Eingabeformular befüllen, mittels Makro erfolgt eine Qualitätssicherung und Übermittlung eines Datensatzes per Email. Diese Daten können dann nach erfolgter Sichtung mittels eines weiteren Makros in die DB geschoben werden.
Ein Problem ist jetzt bei dem Eingabeformular entstanden: als ein Kollege die Datei mehrmals geöffnet hatte, funktionierten die Makros nicht. Excel hat den Dateinamen hochgezählt (z.B.: Dateiname(2).xls), während die Befehlszeile im Makro "Workbooks("Dateiname.xls") usw. erwartet.
Wie kann ich das Problem umgehen bzw. verhindern, dass die Datei mehrfach geöffnet wird?
Vielen Dank für Eure Hilfe.
Robert
 |
Betrifft: AW: Zähler im Dateinamen beim merhfachen Öffnen
von: Luschi
Geschrieben am: 21.10.2014 21:02:31
Hallo Robert,
wenn ich das in Excel 2003-2013 versuche, dann kommt soche Warnmeldung:

Das Einzige, was mir gelingt ist sowas:

Dann habe ich aber nicht die Datei 3 mal geöffnet, sondern nur 3 verschiedene Fensteransichten erstellt.
Gruß von Luschi
aus klein-Paris
Betrifft: AW: Zähler im Dateinamen beim merhfachen Öffnen
von: Robert Rühl
Geschrieben am: 22.10.2014 10:11:14
Hallo Luschi aus Heddernheim,
wenn ich meldung.xls öffne funktioniert das Makro. Wenn ich die Datei schließe und nochamls öffne, wird der Datei Name um den Zähler (2) ergänzt und das Makro läuft nicht:

Bin mittlerweile aber noch ein Stück weiter: die passiert nur, wenn man die Datei aus Outlook heraus öffnet.
Grüße
aus Bockenheim
Robert
Betrifft: Wiederherstellungsdatei?
von: Tino
Geschrieben am: 22.10.2014 11:03:42
Hallo,
könnte es sich um eine Wiederherstellungsdatei handeln, die nach einem Absturz geöffnet wurde?
Gruß Tino
Betrifft: AW: Wiederherstellungsdatei?
von: Robert Rühl
Geschrieben am: 22.10.2014 11:28:11
Nein, das ist keine Wiederherstellungsdatei, ich kann das an meinem Rechner sogar x-beliebig oft nachspielen. Dabei ist mir aufgefallen, dass dieses Phänomen verschwindet (aussetzt), wenn die Email schließe und wieder öffne. Sobald die Datei aus dem Email ein zweites mal geöffnet wird, entsteht das Problem erneut.
Scheint also mehr mit Outlook zusammenzuhängen. Ich überlege gerade, ob ich beim öffnen der Datei überprüfen, ob diese Hochzählung aktiviert wurde und dann eine Fehlermeldung mit der Bitte, Datei und Email zu schließen und neu zu öffnen, ausgebe. Ich weiß allerdings noch nicht, wie ich das genau anstellen soll.
Gruß & Danke
Robert
 |
Betrifft: AW: Wiederherstellungsdatei?
von: Sven Söllner
Geschrieben am: 22.10.2014 11:43:34
Hallo Robert,
dies liegt definitiv an Outlook, da deine Datei vor dem Öffnen temporär gespeichert wird.
Existiert bereits der Name, so ergänzt Outlook automatisch die Datei mit einem Counter.
Beim schliessen der E-Mail löscht auch Outlook diese Datei wieder, jedoch nur wenn diese
beim Schliessen nicht durch Excel geöffnet ist.
Via VBA könntest Du beim Öffnen der Exceldatei eine eindeutige Datei auf deine Platte schreiben und
beim Schliessen der Exceldatei wieder löschen. Existiert beim Öffnen der Exceldatei schon diese durch VBA geschriebene Datei, so soll eine Fehlermeldung ausgegeben werden und anschließend die Datei wieder
geschlossen werden.
Hier ein Beispiel wie dies aussehen könnte:
Public Fehler As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Fehler = False Then Kill "c:\dateicheck.tmp"
End Sub
Private Sub Workbook_Open()
Open "c:\dateicheck.tmp" For Random As #1
If LOF(1) > 1 Then
Fehler = True
MsgBox "Datei bereits geöffnet"
Else
Print #1, "CHECK"
End If
Close #1
If Fehler = True Then Application.Quit
End Sub
Hab den Code jetzt selber nicht getestet, sollte aber funzen...
Grüße
Sven
Betrifft: alternative
von: Tino
Geschrieben am: 22.10.2014 14:04:59
Hallo,
du könntest alternativ nach der entsprechenden Datei suchen.
In Deinem Code arbeitest Du dann mit der Objektvariablen weiter.
Beispiel:
Sub Beispiel()
Dim objWB As Workbook
'zuerst den normalen Dateinamen suchen
For Each objWB In Workbooks
If objWB.Name Like "Dateiname.xls" Then
Exit For
End If
Next objWB
'nicht gefunden, suche nach Dateiname mit zusatz
If objWB Is Nothing Then
For Each objWB In Workbooks
If objWB.Name Like "Dateiname(#).xls" Then
Exit For
End If
Next objWB
End If
If Not objWB Is Nothing Then
MsgBox objWB.Name
Else
MsgBox "Datei nicht gefunden!"
End If
End Sub
Gruß Tino
Beiträge aus den Excel-Beispielen zum Thema "Zähler im Dateinamen beim merhfachen Öffnen"