Datei vorhanden, dann MsgBox
#1
Question 
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 :)
Top
#2
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)
[-] Folgende(r) 1 Nutzer sagt Danke an AlterDresdner für diesen Beitrag:
  • o0Julia0o
Top
#3
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.
Top
#4
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:
  • o0Julia0o
Top
#5
Hallo Stefan,

der Dresdner hat die schließende Klammer zu früh gesetzt, oder nicht.
Gruß Atilla
Top
#6
Hallo,

das:


Code:
ThisWorkbook.Path = AktuPfad

ist m.E. falsch.

Hier:

Code:
Range(Calc3!B111)

fehlen die Gänsefüßchen
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • o0Julia0o
Top
#7
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:
  • o0Julia0o
Top
#8
(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 Sub


Was 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 Su
b
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.
Top
#9
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:
  • o0Julia0o
Top
#10
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:
  • o0Julia0o
Top


Gehe zu:


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