Registriert seit: 08.07.2016
Version(en): 2016
22.02.2017, 20:50
hi, Excel soll gucken, ob eine Datei(die aus einem Feld ausgelesen wird) vorhanden ist. Dann soll eine MsgBox erscheinen. Wenn nicht, eine andere MsgBox. Doch Excel mag meinen Code nicht: Code: Sub DateiExistiert() Dim AktuPfad As String ThisWorkbook.Path = AktuPfad If Range("Calc3!C106") = 1 Then If Dir ("Aktupfad & "Range("Calc3!B111") & ".xlsm" <> "" Then If Range("Calc3!B111") MsgBox "Datei vorhanden" Else MsgBox "Datei nicht vorhanden" End If End If End Sub
Vorher kommt noch eine weitere If-Abfrage: "If Range("Calc3!C106") = 1 Then". Also nur dann soll der Folgecode mit der Dateiüberprüfung ausgeführt werden. Alleine funktioniert die If-Abfrage auch, aber die Dateiüberprüfung funktioniert nicht. Es soll nach der Datei im gleichen Ordner, wo die Hauptdatei(wo der Code ausgeführt wird) geguckt werden. Zeile 5+6 werden mir rot markiert. Was ist daran falsch? danke! Julia :)
Registriert seit: 24.10.2015
Version(en): 2010
Hi Julia, ohne groß herumzutesten, probiere mal Code: If Dir (Aktupfad & "\" & Range("Calc3!B111") & ".xlsm" <> "" Then
, vielleicht geht es dann.
Gruß der AlteDresdner (Win11, Off2021)
Registriert seit: 08.07.2016
Version(en): 2016
22.02.2017, 22:16
(Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2017, 22:38 von o0Julia0o.)
Verstehe - wenn der Pfad kein "\" am Ende automatisch hat. Danke, funkrioniert aber ebenfalls nicht. Die Fehlermeldung bleibt die gleiche: "Fehler beim Kompilieren: Erwartet: Listentrennzeichen oder )" [url= Dateiupload bitte im Forum! So geht es: Klick mich!] Die 6. Zeile in meinem Code aus dem 1. Beitrag ist überigens Quatsch. Aber da ändert leider nichts an der Problematik. So lautet der richtige Versuch: Code: Sub DateiExistiert() Dim AktuPfad As String ThisWorkbook.Path = AktuPfad If Range("Calc3!C106") = 1 Then If Dir ("Aktupfad & " Range(Calc3!B111) & ".xlsm" <> "" Then MsgBox "Datei vorhanden" Else MsgBox "Datei nicht vorhanden" End If End If End Sub
Zeile Zeile 5 ist rot vom Debugger marktiert mit der obigen Fehlermeldung.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Julia, warum änderst Du die Version vom AltenDresdner um, indem Du die Variable in einem String setzt? Excel sagt doch dir, das eine schließende Klammer fehlt. Code: Sub DateiExistiert() Dim AktuPfad As String ThisWorkbook.Path = AktuPfad If Range("Calc3!C106") = 1 Then If Dir(AktuPfad & "\" & Range(Calc3!B111) & ".xlsm") <> "" Then MsgBox "Datei vorhanden" Else MsgBox "Datei nicht vorhanden" End If End If End Sub
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• o0Julia0o
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Stefan,
der Dresdner hat die schließende Klammer zu früh gesetzt, oder nicht.
Gruß Atilla
Registriert seit: 13.04.2014
Version(en): 365
Hallo, das: Code: ThisWorkbook.Path = AktuPfad
ist m.E. falsch. Hier: fehlen die Gänsefüßchen
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
23.02.2017, 11:43
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2017, 11:44 von Rabe.)
Hi, (23.02.2017, 10:54)BoskoBiati schrieb: das:
Code: ThisWorkbook.Path = AktuPfad
ist m.E. falsch. genau, das muß so heißen: Code: AktuPfad = ThisWorkbook.Path
So funktioniert das Makro: Sub DateiExistiert()
Dim AktuPfad As String
AktuPfad = ThisWorkbook.Path
If Worksheets("Calc3").Range("C106") = 1 Then
If Dir(AktuPfad & "\" & Worksheets("Calc3").Range("B111") & ".xlsm") <> "" Then
MsgBox "Datei vorhanden"
Else
MsgBox "Datei nicht vorhanden"
End If
End If
End Sub oder so Sub DateiExistiert()
Dim AktuPfad As String
AktuPfad = ThisWorkbook.Path
If Range("Calc3!C106") = 1 Then
If Dir(AktuPfad & "\" & Range("Calc3!C111") & ".xlsm") <> "" Then
MsgBox "Datei vorhanden"
Else
MsgBox "Datei nicht vorhanden"
End If
End If
End Sub Wichtig ist IMO auch das Option Explicit ganz oben, da wirst Du schön auf Variablen-Schreibfehler hingewiesen.
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
24.02.2017, 00:06
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2017, 00:06 von o0Julia0o.)
(23.02.2017, 08:07)Steffl schrieb: warum änderst Du die Version vom AltenDresdner um, indem Du die Variable in einem String setzt? Ich dachte, er hätte nur die Zeile markiert, welche er ändern wollte. "Sub" oder "End" hat er ja auch nicht in seinem Code. (23.02.2017, 11:43)Rabe schrieb: Wichtig ist IMO auch das Option Explicit ganz oben, da wirst Du schön auf Variablen-Schreibfehler hingewiesen. Welche Explicit? Super, danke euch! So funktioniert das. Ich mußte das .xlsm noch wegmachen, da dieses bereits im Feld steht: Sub DateiExistiert() Dim AktuPfad As String AktuPfad = ThisWorkbook.Path If Range("Calc3!C106") = 1 Then If Dir(AktuPfad & "\" & Range("Calc3!C111") ) <> "" Then MsgBox "Datei vorhanden" Else MsgBox "Datei nicht vorhanden" End If End If End SubWas ist, wenn ich jetzt noch mehrere Ifs hinzufügen möchte? Mein Versuch gibt einen Fehler: Sub DateiExistiert() Dim AktuPfad As String AktuPfad = ThisWorkbook.Path If Range("Calc3!C106") = 1 Then If Dir(AktuPfad & "\" & Range("Calc3!C111") ) <> "" Then MsgBox "Datei1 vorhanden" Else If Dir(AktuPfad & "\" & Range("Calc3!C112") ) <> "" Then MsgBox "Datei2 vorhanden" Else If Dir(AktuPfad & "\" & Range("Calc3!C113") ) <> "" Then MsgBox "Datei3 vorhanden" Else Next End If End If End if End if End Sub Fehlermeldung: "Es muß sich muß sich um die 1. Anweisung in der Zeile handeln". Das kommt bei der 1. Else-Zeile, also Zeile Nr.: 7 [url= Dateiupload bitte im Forum! So geht es: Klick mich!] Also wenn die 1. If-Frage(If Range("Calc3!C106") = 1 Then) falsch ist, soll das Makro beendet werden. Ansonsten soll er alle IF-Fragen durchlaufen. Und dann den Code ausführen(MsgBoxen), wo die IF-Antwort positiv war.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Julia, es heißt auch ElseIf und nicht Else If. Code: Sub DateiExistiert() Dim AktuPfad As String AktuPfad = ThisWorkbook.Path If Range("Calc3!C106") = 1 Then If Dir(AktuPfad & "\" & Range("Calc3!C111")) <> "" Then MsgBox "Datei1 vorhanden" ElseIf Dir(AktuPfad & "\" & Range("Calc3!C112")) <> "" Then MsgBox "Datei2 vorhanden" ElseIf Dir(AktuPfad & "\" & Range("Calc3!C113")) <> "" Then MsgBox "Datei3 vorhanden" End If End If End Sub
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28
• o0Julia0o
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi Julia, (24.02.2017, 00:06)o0Julia0o schrieb: Welche Explicit? Es gibt im VBA-Editor im Menü "Extras" - "Optionen..." im Register "Editor" den Punkt "Variablendeklaration erforderlich", dieser sollte angehakt sein, dann erscheint bei jeder neuen Datei, bei jedem neuen Modul als erstes der Begriff "Option Explicit" (bei jedem Modul nur ein Mal). Wenn es oberhalb Deiner bestehenden Makros nicht steht, kann es auch per Hand eingefügt werden. Dadurch wirst Du auf Fehler in der Variablendeklaration /-schreibweise hingewiesen und kannst so Fehler vermeiden. Allgemein ist es sinnvoll, auf diesem Register "Editor" alle Häkchen zu setzen.
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28
• o0Julia0o
|