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.

VBA If-Abfrage, wenn die Datei im Pfad/Ordner nicht gefunden wird.
#11
Hallöchen,

was steht in der Überwachung bei Pfad & Cells(i, 1) & ".xlsb"
Stimmt die Angabe mit Deinem Pfad und Dateiname überein?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#12
Hallo Andrè,


danke für deine Nachfrage, die ich als Anfänger nicht so ganz verstehe. Möglicherweise liegt das an dem inzwischen falschen Betreff vom Thread, der nur am Anfang so richtig war. Inzwischen hat sich ergeben, daß eine If - Then - Abfrage besser geeignet ist, als eine Loop-Do Lösung. Hier das Problem:

Eine (große) Excel-Datei im .xlsm-Format hat in der Spallte A ab A2 bis zu 1000 Dateinamen im .xlsb-Format stehen. Die aktive Zelle soll diese Datei durch den bekannten Pfad in einem bestimmten Ordner suchen. Wenn (If) die gesuchte (kleine) Datei vorhanden ist, dann (Then) soll sie geöffnet werden, wenn sie nicht gefunden wird, dann soll zum Ende springen (End if) und in der großen Tabelle in der Spalte A eine Zelle nach unten es mit einer neuen Datei  (next i) versuchen und falls diese Zelle leer ist, dann eine Meldung ausgeben, daß die Arbeit beendet ist.
Der Strang, wenn bei der Suche die Datei nicht gefunden wird, funktioniert einwandfrei. Ich will keine Fehlermeldung.
Das eigentliche Problem liegt darin, dass bei der Wenn-Abfrage keine Datei gefunden wird und dann den Strang "nicht gefunden"  abläuft.

1FIN_N-0322    so schauen die Dateinamen in der Spalte A aus.
1FIN_N-0323
1FIN_N-0324
1FIN_N-0325
1FIN_N-0326


Hast du eine Idee, warum die Datei im Ordner nicht erkennt wird?
Vielen Dank im voraus.
Jorg

Code:
Sub Auswertung()


    Dim Wb As Workbook 'die "WbDatei" ist die geöffnete kleine Datei "1FIN_N_0321"
  Pfad = "C:\Users\Jorg\Documents\Regina\Excel-Projekt2\.xlsb\" '<<< anpassen >>>"
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
   
    If Dir(Pfad & Cells(i, 1) & ".xlsb") <> "" Then  'wenn die Datei existiert, dann...
    Set Wb = Workbooks.Open(Pfad & Cells(i, 1) & ".xlsb") 'die kleine Datei ist gefunden und geöffnet
   
    Sheets("Statistik").Select 'die kleine Datei öffnet dieses Tabellenblatt
    Range("B1:B5").Select 'markiere diese 5 Werte
    Selection.Copy 'kopiere die 5 Werte
    ThisWorkbook.Activate 'die große Datei
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True 'füge die 5 Werte in die große Datei ein
   Wb.Activate 'das ist die geöffnete kleine Datei
    Application.CutCopyMode = False 'mit ESC den Copy-Modus entfernen'
    Range("A1").Select 'immer noch in der kleiner Datei
      Wb.Close 0 ' 1 = schließen mit speichern; 0:= schließen ohne speichern
    ActiveCell.Offset(0, -2).Range("A1").Select 'große Datei,gehe wieder zurück zu Spalte A

    End If 'die Schleife ist zu Ende
   
    ActiveCell.Offset(1, 0).Select 'gehe in Spalte A eine Zelle nach unten
If ActiveCell = "" Then 'wenn die neue Zelle leer ist, dann...
        MsgBox "In dieser Zelle steht kein Dateiname. Daher Abbruch."
        Exit Sub 'Makro wird abgebrochen
    End If 'Makro wird weiter durchgeführt

    Next i 'die Schleife startet wieder von vorne

End Sub
Antworten Top
#13
Hallöchen,

Du willst also nur eine Datei öffnen und nicht nacheinander die anderen auch?

Dann schiebe diese Zeile

End If 'die Schleife ist zu Ende

vor das Schleifenende und schreibe an die bisherige Stelle

Else

sieht dann so aus:

Code:
Else
  
    ActiveCell.Offset(1, 0).Select 'gehe in Spalte A eine Zelle nach unten
    If ActiveCell = "" Then 'wenn die neue Zelle leer ist, dann...
      MsgBox "In dieser Zelle steht kein Dateiname. Daher Abbruch."
      Exit Sub 'Makro wird abgebrochen
    End If 'Makro wird weiter durchgeführt
  End If 'die Schleife ist zu Ende
Next i 'die Schleife startet wieder von vorne
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Hallo Andrè,

o nein, ich möchte nach der ersten Datei auch die anderen der Reihe nach jeweils einzeln öffnen. Entschuldigung, wenn ich das nicht klar genug ausgeführt habe.  Nach der ersten Datei wird eine Zeile tiefer geprüft, ob diese nächste Zelle leer ist. Wenn sie nicht leer ist, dann wird das Makro bei " End if" weiter durchgeführt.
Und in der letzten Zeile  steht mit "Next i " die Schleife startet wieder von vorne.
Und da liegt das eigentliche Problem: bei diesen beiden Zeilencodes,
Code:
If Dir(Pfad & Cells(i, 1) & ".xlsb") <> "" Then  'wenn die Datei existiert, dann...
    Set Wb = Workbooks.Open(Pfad & Cells(i, 1) & ".xlsb") 'die kleine Datei ist gefunden und geöffnet

Hier wird leider keine Datei im Ordner laut Pfad gefunden und kann deshalb auch nicht geöffnet werden.


Viele Grüße

Jorg
Antworten Top


Gehe zu:


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