Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
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

workbooks.open und Datei schließen

workbooks.open und Datei schließen
01.12.2016 10:46:04
Mike
Hallo Forum,
bisher habe ich jedes meiner Probleme entweder selbst, durch Diskussionen mit Kollegen oder mit einer Internetrecherche lösen können, aber jetzt weiß ich wirklich nicht weiter.
Folgendes Problem: Ich habe als eine Art "Schaltzentrale" eine UserForm erstellt, aus der einige (= viele) verschiedene Excel-Dateien, die in komplizierten Ordnerstrukturen "vergraben" sind, schnell auf Knopfdruck geöffnet werden können (= UserFormDatei).
So weit, so gut. Das UserForm schließt sich, die Datei wird geöffnet (= NeueDatei) und die NeueDatei befindet sich anschließend im Vordergrund. Alles richtig.
ABER: Möchte ich dann die NeueDatei über das Windows-Standard-X oben rechts schließen, passiert entweder nichts oder ich werde gefragt, ob ich die UserFormDatei vor dem Schließen speichern möchte. Wohl gemerkt, im Vordergrund befindet sich die NeueDatei.
Verwende ich das Mausrad zum Scrollen, bewegt sich in der NeueDatei nichts, die Scrollbewegung wird aber in der UserFormDatei durchgeführt.
Ich habe sehr viel versucht, aber nichts hat geholfen. Ich hoffe, jemand von Euch kann helfen. Hier ist mein Code:
UserForm

Private Sub cmdLanzeitauswertung_Click()
Dim wkbDatei As Workbook, strPfad As String, strDateiname As String
strPfad = "ordner1\ordner2\ordner3\ordner4\ordner5\ordner6\ordner7\"
strDateiname = "Langzeitauswertung 04-ff.xlsm"
Set wkbDatei = DateiOeffnen(strPfad & strDateiname)
Unload dlgAuswahlfenster
Set wkbDatei = Nothing
End Sub

Modul modFunktionen

Function DateiOeffnen(strDatei As String) As Workbook
Dim wkbDatei As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'   IST DIE GEWÜNSCHTE DATEI BEREITS GEÖFFNET?
'   Extrahiere den Dateinamen aus der übergebenen Dateipfad/Dateinamen-Kombination
'   (strDatei)
'   Prüfe, ob geöffnet
If DateiLokalGeoeffnet(Mid(strDatei, InStrRev(strDatei, "\") + 1, _
Len(strDatei) - InStrRev(strDatei, "\"))) Then
Set wkbDatei = Application.Workbooks(Mid(strDatei, _
InStrRev(strDatei, "\") + 1, Len(strDatei) - _
InStrRev(strDatei, "\")))
Set DateiOeffnen = wkbDatei
'   IST SIE NICHT GEÖFFNET, DANN
'   Serverpfad (Konstante) mit Dateinamen zusammenführen und Datei öffnen
Else
On Error Resume Next
Set wkbDatei = Application.Workbooks.Open(p_cstrServerpfad & _
strDatei, , , , , , , , , , , , False)
'           Fehler beim Öffnen?
If Err.Number  0 Then
Err.Clear
MsgBox "Die Datei '" & p_cstrServerpfad & strDatei & _
"' konnte nicht geöffnet werden!", vbCritical, _
p_cstrAppName
DateiOeffnen = Nothing
Exit Function
End If
On Error GoTo 0
Set DateiOeffnen = wkbDatei
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Function
Function DateiLokalGeoeffnet(ByVal strName As String) As Boolean
On Error Resume Next
DateiLokalGeoeffnet = Not Workbooks(strName) Is Nothing
On Error GoTo 0
End Function

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: workbooks.open und Datei schließen
01.12.2016 11:56:14
Bernd
Servus Mike,
mal anders gefragt, wenn du die Userform nur zum Öffnen verwendest, warum stellst du in deiner Schaltzentrale nicht einfach eine Linksammlung zum Öffnen der Dateien zur Verfügung?
Hajo_Zi hat mal ein schönes Beispiel zum Auslesen von Ordnern mit Dateilink erstellt:
http://hajo-excel.de/chCounter3/getfile.php?id=21
Grüße, Bernd
AW: workbooks.open und Datei schließen
01.12.2016 12:16:41
Mike
Leider kann ich die verlinkte Datei hier nicht öffnen, weil sie gegen unsere Sicherheitsrichtlinie verstößt. Und natürlich bin ich nach wie vor an der Lösung des Problems interessiert.
Mir fällt gerade ein, bei einer anderen Datei hatte ich das Problem auch erst, aber ich konnte es umgehen, indem ich Inhalte eines anderen Blatts in das geöffnete Kopiert habe. Das ging dann.
Mir fiel zudem gerade ein, dass das Problem nicht nur bei workbooks.open besteht, sondern ich es auch schon bei workbooks.add hatte. Ich habe sogar schon versucht, es ohne Objektvariable zu machen, aber der Fehler besteht trotzdem. Das macht mich ganz verrückt.
Dennoch interessiert mich die von dir verlinkte Lösung. Das muss ich mir zu Hause unbedingt mal anschauen.
Anzeige
AW: workbooks.open und Datei schließen
01.12.2016 13:30:22
Mike
Erstaunlicherweise, das habe ich gerade mal getestet, tritt der Fehler nicht mehr auf, wenn ich das Dialogfenster mit .Show(0) aufrufe.
Das ist als Workaround nicht schlecht, aber trotzdem hätte ich lieber ein blockierendes UserForm statt eines "offenen" mit .Show(0)
AW: workbooks.open und Datei schließen
01.12.2016 13:58:21
Mike
Noch ein Nachtrag: Lasse ich den VBA-Editor im Hintergrund geöffnet, springt dieser kurz aus dem Hinter- in den Vordergrund, wird dann überdeckt von NeueDatei und alles funktioniert, wie es soll.
Ohne VBA-Editor tritt genanntes Problem auf.
AW: workbooks.open und Datei schließen
01.12.2016 13:26:59
Rudi
Hallo,
ich käme nie auf die Idee, eine Datei mittels einer Function zu öffnen. Functions sind dazu da, Werte zurückzugeben und nicht irgendwelche Aktionen durchzuführen.
etwa so:
 Private Sub cmdLanzeitauswertung_Click()
Dim strPfad As String, strDateiName As String
strPfad = "ordner1\ordner2\ordner3\ordner4\ordner5\ordner6\ordner7\"
strDateiName = "Langzeitauswertung 04-ff.xlsm"
DateiOeffnen (strPfad & strDateiName)
Unload dlgAuswahlfenster
End Sub
Sub DateiOeffnen(strDatei)
Dim vntDateiName
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'   Extrahiere den Dateinamen aus der übergebenen Dateipfad/Dateinamen-Kombination
'   (strDatei)
vntDateiName = Split(strDatei, "\")
vntDateiName = vntDateiName(UBound(vntDateiName))
'   wenn nicht geöffnet
If Not DateiLokalGeoeffnet(vntDateiName) Then
If Dir(p_cstrServerpfad & strDatei, vbNormal)  "" Then
Workbooks.Open p_cstrServerpfad & strDatei, , , , , , , , , , , , False
Else
MsgBox "Die Datei '" & p_cstrServerpfad & strDatei & _
"' konnte nicht geöffnet werden!", vbCritical, _
p_cstrAppName
End If
End If
Application.DisplayAlerts = True
End Sub
Gruß
Rudi
Anzeige
AW: workbooks.open und Datei schließen
01.12.2016 13:43:12
Mike
Ich mache das, um am Ende eine Objektvariable zu haben, mit der ich weiterarbeiten kann. Das ist zwar in dieser Datei eigentlich nicht notwendig, aber einmal dran gewöhnt, mache ich es doch immer wieder ;)
Nichtsdestotrotz habe ich deine Variante ausprobiert, aber leider besteht das Problem weiterhin.
AW: workbooks.open und Datei schließen
01.12.2016 14:20:39
Rudi
Hallo,
um am Ende eine Objektvariable zu haben
ein hehres Ziel.
Aber warum setzt du sie dann direkt wieder auf Nothing?
Gruß
Rudi
AW: workbooks.open und Datei schließen
02.12.2016 09:08:09
Mike
Wohl wahr, in dieser Datei wäre eine Funktion zum Öffnen nicht notwendig. Aber wie gesagt, ob mit Funktion oder ohne geöffnet wird, das Problem besteht leider weiter :(
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige