Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Pfad aus Zelle auslesen
#1
Hallo Zusammen,

 Ich möchte aus einer öffenden ExceDatei eine weitere Datei öffnen und auslesen.
dies erledige ich aktuell mit folgendem VBA Code in VBA - IN DIESER ARBEITSMAPPE

Const QUELLE = "I:V3-0Test1.xlsx"

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False

Workbooks.Open QUELLE, , True
Workbooks(Mid(QUELLE, InStrRev(QUELLE, "") + 1)) _
.Windows(1).Visible = False

Me.Saved = True

Application.ShowWindowsInTaskbar = True
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbooks(Mid(QUELLE, InStrRev(QUELLE, "") + 1)).Saved = True
Workbooks(Mid(QUELLE, InStrRev(QUELLE, "") + 1)).Close
End Sub

(Quelle: https://groups.google.com/forum/#!to...el/VohtKeUSPe4)



Jetzt habe ich aber folgende Frage:

Wie kann ich den Pfad ändern?
s.o. die Zeile:

Const QUELLE = "I:V3-0Test1.xlsx"

Der Pfad+Dateiname soll in der UrsprungsEXCEL Datei stehen , die die andere Datei öffnet .
z.B. im Arbeitsblatt "Konfiguration" Zelle N25

Grund: Weil der Standarduser nicht im VBA/Programmcode ändern soll.

Danke Euch für die Mühe

MfG
Matthias
Antworten Top
#2
Hallo Matthias

im Prinzip hast du die Antwort bereits in deiner Frage Selbst vorgegeben, du siehtst sie bloss nicht!!  s. unterne Code
Die Const Anweisung löschen und die Variable Quellle direkt aus der Zelle im Blatt "Konfiguration" laden.  Da muss der Pfadname natürlich drinstehen!!

Mit diesem Codeteil stimmt m.E. ganz gewaltig etwas nicht.  Bittre selbst nachprüfen:  (der ist total unlogisch!!)
'Workbooks (Mid(QUELLE, InStrRev(QUELLE, "") + 1).Windows(1).Visible = False

Der Befehl Mid braucht ein 3. Argument, das fehlt hier völlig. bei InstrRev(Quelle,"") +1 wird nach "Nichts" gesucht, da steht kein Text oder Leerzeichen!! Was soll da rauskommen?? Hinter Workboosk steht Windows! Dieser Befehl gehört aber eigentlich an den Anfang eines Codes, nicht zum Schluss. Was willst du da ausblenden??  Schreibe doch lieber direkt:  Windows(xx).Visble=False   Das sollte klappen.

mdfg  Gast 123

Code:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False

'Hole dir den Namen direkt aus der Zelle N25, so einfach !!
QUELLE = ThisWorkbook.Worksheets("Konfiguration").Range("N25").Value

'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
'dieser Befehl stimmt Nicht!!  Mid benötigt ein 3. Argument!!
'Workbooks (Mid(QUELLE, InStrRev(QUELLE, "") + 1).Windows(1).Visible = False

'Me.Saved = True

Fehler:  'bei Fehler hierhin springen
If Err > 0 Then MsgBox "Öffen Fehler !!"
Application.ShowWindowsInTaskbar = True
Application.ScreenUpdating = True
End Sub
Antworten Top
#3
Hallo Gast 123,

hm, iwie scheint das 3.Argument bei MID nicht zwingend notwendig zu sein, weil der Compiler keine Fehlermeldung auswirft.

Ich habe den Code einfach aus einem Beitrag bei Google übernommen , da ich selber noch sehr in den Anfängen von VBA stecke.

Aber er funktioniert wunderbar. Undecided

Wie baue ich jetzt Deinen Code zum Auslesen in meinen bestehenden ein?

VLG
Matthias
Antworten Top
#4
Hallo Matthias

mein Code ist bereits der neue Code, da must du nichts mehr einbauen.  Einfach komplett ins Modul übernehmen!
Nur hier an der Stelle must die die  ' Zeichen entfernen, weil jetzt diese Zeile als Kommentar gilt und grün erscheint!
Diese Zeilen hatte ich bei mir zum Testen deaktiviert, dafür muss man vor den 1. Befehl ein " ' " setzen!  Lösche bitte die beiden Zeichen.
Workbooks (Mid(QUELLE, InStrRev(QUELLE, "") + 1).Windows(1).Visible = False
Me.Saved = True

mfg  Gadt 123
Antworten Top
#5
Hallo Gast 123,

danke für Deine Info ! So langsam kommen wir der Sache näher - glaube ich.

Ich habe Deinen Code mal so genommen inkl der beiden deaktivierten Zeilen .
(Aktiviere ich diese dann läuft er auf Öffnen Fehler)
Das Auslesen funktioniert insoweit dass Excel die Datei öffnet und auch ausliest :17:

ABER:
Mit meinem Code vorher hat EXCEL die nachzuladende Datei IM HINTERGRUND geöffnet
und beim Schließen der Anwendung auch die Hintergrunddatei wieder geschlossen.
Jetzt wird die Datei SICHTBAR geöffnet und auch nicht geschlossen wenn ich die Hauptdatei 
schliesse. Huh

MfG
Matthias
Antworten Top
#6
Hallo Matthias

Sorry, das habe ich nicht erwartet.  Dann nimm das alte Programm im Original und aendere nur den Anfangs Teil:
Die Const Anweisung "Quelle" musst du dabei löschen, es darf keine zwei Variablen mit gleichem Namen geben!!

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False
'Hole dir den Namen direkt aus der Zelle N25
QUELLE = ThisWorkbook.Worksheets("Konfiguration").Range("N25").Value

alles andere bitte wie vorher im Original lassen !!

mfg  Gast 123
Antworten Top
#7
Hallo Gast 123,

VIELEN DANK für Deine Hilfe schon mal.

Nur als Zwischenbescheid:

Ich komme voraussichtlich erst am Wochenende dazu hier weiter zu machen.

Nur damit Du Dich nicht wunderst.
Ich gebe auf jeden Fall Rückmeldung.


Danke nochmal für Deine Mühe.

VLG
Matthias
Antworten Top
#8
Hallo Gast 123,

so wie versprochen: Ich hab es jetzt probiert und nun funktioniert gar nix mehr Sad

Also:
Mein urspr. Code funktioniert nun auch nicht mehr. Er bleibt - wie Du richtig sagtest - bei dem Befehl MID hängen.
Warum der in dieser Woche mal ganz gut lief, keine Ahnung.

Also habe ich Deinen Code verwendet , sowohl in der ersten wie auch in der zweiten Fassung.
Nur läuft mir das ganze jedesmal auf "Öffnen Fehler "
Ich weiss aber nicht warum.

Im Konfigurationsreiter steht in Zelle N25 Folgendes :   I:\V3-0\[Test.xlsx]
Ich habe es sowohl mit ' wie auch ohne probiert.

Hm, wat nu? Huh

P.S. Vllt hilft es Dir : Der Fehlercode ist der Laufzeitfehler 1004



Sorry und danke für deine Mühe

Matthias
Antworten Top
#9
Hallo Matthias

what nu is ne juute Frage.  Sitze ich vor dem PC fallen mir auf Grund langer Erfahrung immer wieder Ausweichmöglichkeiten ein.  Aber so ist es etwas mühsam.

Was mich wundert ist, das dein Code Anfangs lief, erst jetzt mit Fehlermeldung kommt!!  Da sage ich nanüüü ???  Mir fiel aber das hier auf:
Zitat:Im Konfigurationsreiter steht in Zelle N25 Folgendes :   I:\V3-0\[Test.xlsx]

Den Datei Namen in Klammern und das ' Zeichen schreibt man normalerweise nur bei Formeln in externe Tabellen, aber nicht zum Öffnen einer Datei! Nimm die Klammer mal raus und schau was passiert.  Und keine ' Zeichen!!

mfg  Gast 123
Antworten Top
#10
Hallo Gast123,

warum der erst lief und jetzt nicht mehr - keine Ahnung , vllt war ich zu doof oder hab was übersehen.

Deinen Vorschlag habe ich versucht zu verwenden  (ohne \)  , aber jetzt erscheint die Fehlermeldung von EXCEL:  Kein gültiger Dateipfad in N25 - Abbruch!
Was ich aber versehe wenn ich Deine IF THEN Zeile betrachte.
Lösche ich den Teil ab OR (bis vor THEN) , dann kommt wieder der Fehler 1004

Gegen das Zeichen   '    kann iwie nichts tun, das baut EXCEL immer wieder selber ein. 

Klar ist es so etwas mühsam. Was kann ich dagegen tun?

Aktuell sieht der Code wie folgt aus:


Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False
'Hole dir den Namen direkt aus der Zelle N25
QUELLE = ThisWorkbook.Worksheets("Konfiguration").Range("N25").Value
'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
'dieser Befehl stimmt Nicht!!  Mid benötigt ein 3. Argument!!
'Workbooks (Mid(QUELLE, InStrRev(QUELLE, "") + 1).Windows(1).Visible = False
'Me.Saved = True
Fehler:  'bei Fehler hierhin springen
If Err > 0 Then MsgBox Err, vbExclamation, "Öffnen Fehler !!"
Application.ShowWindowsInTaskbar = True
Application.ScreenUpdating = True
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste