Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo Matthias
oh oh, das wird eine schwere Geburt. Ganz höfliche Bitte an dich, nicht böse sein. Meinen Text bitte richtig lesen!
Ich empfahl die Klammer: [] und ' Zeichen zu löschen!! Dieses Zeichen NICHT löschen "\" Das muss im Pfad unbedingt drin sein!!
Am besten zeichnest du den Öffnen Vorgang einmal manuell mit dem Makro Recorder auf, über das Menü Datei Öffnen, dann zeichnet der Recorder dir den richtigen Pfad auf. Er steht hinter Workbook Open.Pfadname:= "xxxxxx" Diesen Pfadnamen, bitte ohne die "" Zeichen in die Zelle N25 kopieren. Dann sollte es klappen.
mfg Gast 123
Registriert seit: 10.09.2017
Version(en): EXCEL 2013
17.09.2017, 17:28
(Dieser Beitrag wurde zuletzt bearbeitet: 17.09.2017, 17:28 von BraBra.)
Hallo Gast 123,
jetzt ist der Fehler weg , war - natürlich - mein Fehler.
Ja, da brauchst auch nicht höflich sein, da bin ich zu hektisch

OK, jetzt wird die Datei geladen und steht im Vordergrund.
Was mir nun eigentlich noch fehlt wie lade ich die Datei unsichtbar und schließe
sie wieder wenn ich die Hauptdatei schliesse. (Nach Beendigung der Arbeit in der Hauptdatei)
Ich bekomme den Code nicht zusammen
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo Matthias
freut mich das wir mit Geduld die Sache endlich zum laufen gebracht haben! Schön ... den Rest schaffen wir auch noch.
Es sind zwei Makros die du an getrennten Stellen einbauen must. Keine Sorge, das schaffen wir. Zum 1. Makro:
Das gehört in die Hauptdatei, und zwar ins Modul "ThisWorkbbok" oder "DieseMappe". Einfach reinkopieren, Fertig !!
Der zweite Codeteil muss im bestehenden Code ausgetauscht werden, ich denke es ist so gut beschrieben das du es problemlos kannst.
mfg Gast 123
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Workbook schliessen ohne zu speichern!! s.False
Quelle = ThisWorkbook.Worksheets("Konfiguration").Range("N25").Value
Workbooks(Quelle).Close savechanges:=False
End Sub
Sub Test()
'diesen Befehl einfach durch den unteren ersetzen
'Workbooks (Mid(QUELLE, InStrRev(QUELLE, "") + 1).Windows(1).Visible = False
'Quelle Fenster unsichtbar stellen
Windows(Quelle).Visible = False
End Sub
Registriert seit: 10.09.2017
Version(en): EXCEL 2013
18.09.2017, 11:18
(Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2017, 11:18 von BraBra.)
Hallo Gast 123,
so langsam wird es :63:
Das Öffnen klappt nun im Hintergrund ganz gut !
Was jetzt allerdings noch Probleme macht ist das Schließen.
Hier kommt bei der Zeile ThisWorkbook........ ein "Laufzeitfehler 9, Index außerhalb des gültigen Bereichs"
Im Debugger steht aber der richtige Pfad im Argument Quelle (wenn man mit dem Cursor über Quelle geht).
Im Intenet findet man scheinbar öfter das Problem mit dieser Fehlermeldung beim Schließen, aber irgendwie keine richtige Lösung.
Kann es damit zusammenhängen, dass bei .Close die Quelle nicht den Pfad, sondern nur den Dateinamen enthalten darf ?
EDIT: Siehe nachfolgenden Beitrag
VLG
Matthias
Registriert seit: 29.09.2015
Version(en): 2030,5
18.09.2017, 11:24
(Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2017, 11:24 von snb.)
Diese Code reicht:
Code:
Private Sub Workbook_Open()
if dir(sheets("Konfiguration").Range("N25"))<>"" then
with getobject(sheets("Konfiguration").Range("N25"))
sn=.sheets(1).cells(1).currentregion
.close 0
end with
end if
End Sub
@Gast123
Excel mid() <> VBA mid()
msgbox mid("123456",4); Ergebnis "456"
in Excel
=mid("123456";4;200) ; Ergebnis "456"
Registriert seit: 10.09.2017
Version(en): EXCEL 2013
18.09.2017, 11:24
(Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2017, 21:16 von WillWissen.
Bearbeitungsgrund: Code in Codetags gesetzt
)
Hallo Gast 123,
es ist vollbracht ! :18:
Ich habe in Deinen Workbook_Beforeclose
noch folgendes eingefügt:
Q1 = Mid(Quelle, InStrRev(Quelle, "\") + 1)
und geändert:
Workbooks(Q1).Close savechanges:=False
Somit lautet der Code nun vollständig wie folgt:
Code:
Private Sub Workbook_Open()
Dim WB As Workbook, WB_Akt As Workbook
'Hole dir den Namen direkt aus der Zelle N25, so einfach !!
Quelle = ThisWorkbook.Worksheets("Konfiguration").Range("N25").Value
Set WB_Akt = ActiveWorkbook
Set WB = Workbooks.Open(Quelle)
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False
'Abbruch bei "" oder ungültigem Pfadnamen
If Quelle = "" Or InStr(Quelle, ":\") = 0 Then
MsgBox "In Zelle N25 kein gültiger Pfad gefunden - Abbruch!!"
Exit Sub
End If
On Error GoTo Fehler
Workbooks.Open Quelle, , True
Application.ActiveWindow.Visible = False 'für sichtbar auf True stellen
WB_Akt.Activate
Fehler: 'bei Fehler hierhin springen
If Err > 0 Then MsgBox "Öffnen Fehler !!"
Application.ShowWindowsInTaskbar = True
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Workbook schliessen ohne zu speichern!! s.False
Quelle = ThisWorkbook.Worksheets("Konfiguration").Range("N25").Value
Q1 = Mid(Quelle, InStrRev(Quelle, "\") + 1)
Workbooks(Q1).Close savechanges:=False
End Sub
Lieber Gast123,ich DANKE DIR RECHT HERZLICH für Deine Mühen und Aufwände , ohne Deine geduldige und fachkundige Art hätte ich das nicht geschafft !Klasse Support !!!!!!!!VLG
Matthias
Registriert seit: 29.09.2015
Version(en): 2030,5
Schau mal bitte #15 an......
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo Matthias
hallo snb
ich freue mich sehr das wir vor meinem Urlaub die Sache noch hinbekommen haben, nehme das Dankeschön gerne an.
zum Kollegen snb habe ich iimmer gesagt das er vom programmieren her um Klassen besser ist wie ich. Da mache ich keinen Hehl draus.
Was mich im Forum vielleicht auszeichnet ist die Geduld weiter am Ball zu bleiben wenn eine Sache zunaechst nicht klappen will.
In diesem Sinne gehe ich frohgemut in Urlaub. Man sieht sich irgendwann wieder im Forum. So long ....
mfg Gast 123
Registriert seit: 10.09.2017
Version(en): EXCEL 2013
Hallo Gast123,
einen schönen Urlaub wünsche ich Dir.
Und soo viel kürzer ist der andere Vorschlag auch nicht, weil in dem Code bei Dir ist ja eine Fehlerbehandlung enthalten.
Und nochmal: Danke für deine Geduld - bin überglücklich !
VLG
Matthias
Registriert seit: 29.09.2015
Version(en): 2030,5
(18.09.2017, 16:32)BraBra schrieb: weil in dem Code bei Dir ist ja eine Fehlerbehandlung enthalten.
Lese mal ruhig wieder...mit Brille.