Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 52 an Luschi

Forumthread: Laufzeitfehler 52 an Luschi

Laufzeitfehler 52 an Luschi
16.06.2020 07:15:14
Uli
Hallo an Alle,
Luschi hat mir die Datei angepasst . Zu diesem Zeitpunkt lagen die Dateien alle in einem Ordner. Nun habe ich die Dateien in die Endgültigen Ordner gelegt.
Soweit so gut. Bin leider kein VBA Profi.
Bekomme immer den Laufzeitfehler 52 und das Makro bleibt hier hängen If Dir(sPfad & sDatei, vbNormal) "" Then
Zur Erklärung:
In der Datei : T:\Montage\Schichtübergabeprotokoll\Schichtübergabe_MO.xlsm werden werte eingetragen die dann per Makro in die Datei :T:\Prüflehren\PT05_FB_0001_Aktions- und Maßnahmenplan_MB.xlsm
übergeben werden.
Glaube habe beim angeben der Pfade etwas vergessen oder etwas falsch eingetragen.
Wo ist der Fehler ? Finde ihn nicht.
Danke und Gruß Uli
Public Sub Schreiben_PMV_Früh()
Application.ScreenUpdating = False
'schreibt in geschlossene PMV
Dim sPfad         As String     ' der Ordner-Pfad der Excel-Mappen
Dim sDatei        As String     ' die zu beschreibende Datei
Dim WkSh_Q        As Worksheet  ' das Quell-Tabellenblatt - die Herkunft
Dim WkSh_Z        As Worksheet  ' das Ziel-Tabellenblatt - das Ergebnis
Dim ersteFreieZelle As Long
'Pfad Luschi
sPfad = ThisWorkbook.Path & ""
sDatei = "\T:\Prüflehren\PT05_FB_0001_Aktions- und Maßnahmenplan_MB.xlsm\"
If Dir(sPfad & sDatei, vbNormal)  "" Then
Workbooks.Open (sPfad & sDatei)
ThisWorkbook.Activate
Else
MsgBox "Den angegebenen Ordner """ & sPfad & """" & Chr(10) & _
"und/oder die gesuchte Datei """ & sDatei & """ gibt es nicht!", _
16, "   Hinweis für " & Application.UserName
Exit Sub
End If
Set WkSh_Q = ThisWorkbook.Worksheets("Frühschicht")
'neu
Application.EnableEvents = False
Set WkSh_Z = Workbooks(sDatei).Worksheets(WkSh_Q.Range("A74").Value)
ersteFreieZelle = WorksheetFunction.Max(7 - 1, WkSh_Z.Range("B29").End(xlUp).Row) + 1
WkSh_Z.Unprotect ""
WkSh_Q.Cells.Range("C74:E74").Copy Destination:=WkSh_Z.Range("B" & ersteFreieZelle & ":D" & _
ersteFreieZelle)
Application.EnableEvents = True
'datum in action plan schreiben
WkSh_Z.Range("B" & ersteFreieZelle) = Date
WkSh_Z.Protect ""
MsgBox "Die Daten wurden erfolgreich übergeben.", _
64, "   Information für " & Application.UserName
With WkSh_Z.Parent
.Save
.Saved = True
'.Close False
End With
Set WkSh_Q = Nothing: Set WkSh_Z = Nothing
Application.ScreenUpdating = True
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 52 an Luschi
16.06.2020 09:18:05
Werner
Hallo,
wieso hast du hier
sPfad = ThisWorkbook.Path & ""

ein "Leer" am Ende des Pfades? Da gehört ein Backslash hin.
Zudem scheint mir der Pfad falsch zu sein. This Workbook.Path ist der Pfad der Datei, in der dieses Makro steht. Und das ist ja wohl nicht der, in dem die Zieldatei steht.
Dafür ist hier
sDatei = "\T:\Prüflehren\PT05_FB_0001_Aktions- und Maßnahmenplan_MB.xlsm\"

ein Backslash am Ende, nach dem Dateinamen und der gehört da nicht hin.
Zudem wird das als "Dateiname" im weiteren Code verwendet, du hast dort aber einen kompletten Pfad drin und nicht nur einen Dateinamen.
Versuch mal:
sPfad = "T:\Prüflehren" &"\"
sDatei = "PT05_FB_0001_Aktions- und Maßnahmenplan_MB.xlsm"
Gruß Werner
Anzeige
Danke Werner
16.06.2020 10:21:57
Uli
Hallo Werner,
danke für die Hilfe.
Habe die Fehler nach Deiner Angabe gefunden und behoben. Jetzt funktioniert es .
Danke und Gruß Uli
Gerne u. Danke für die Rückmeldung. o.w.T.
16.06.2020 11:03:20
Werner
AW: Laufzeitfehler 52 an Luschi
16.06.2020 10:20:33
Luschi
Hallo Uli,
mein Code sah so aus:

'Pfad User
'sPfad = "C:\Users\ElCapitan\Desktop\Prüflehren\"
'Pfad Luschi
sPfad = ThisWorkbook.Path & "\"
sDatei = "PT05_FB_0001_Aktions- und Ma?nahmenplan_MB.xlsx"
Das heißt. daß der Pfad und der eigentliche Dateiname in 2 Variablen getrennt sind und weiter ging's dann so:

If Dir(sPfad & sDatei, vbNormal) "" Then
Workbooks.Open (sPfad & sDatei)
Gruß von Luschi
aus klein-Paris
Anzeige
Danke Luschi
16.06.2020 10:24:09
Uli
Hallo Luschi,
da hat sich bei mir der Fehlerteufel eingefunden.
Funktioniert aber wieder.
Danke und Gruß Uli
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler 52 in Excel VBA beheben


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 52 in Excel VBA zu beheben, befolge diese Schritte:

  1. Überprüfe den Pfad und Dateinamen: Stelle sicher, dass der Pfad zu deiner Datei korrekt angegeben ist. Der Pfad sollte nicht mit einem Backslash enden und der Dateiname sollte in einer separaten Variablen gespeichert werden.

    Beispiel:

    sPfad = "T:\Prüflehren\"
    sDatei = "PT05_FB_0001_Aktions- und Maßnahmenplan_MB.xlsm"
  2. Verwende die Dir-Funktion richtig: Achte darauf, dass der Pfad und der Dateiname zusammengefügt werden, wenn du die Dir-Funktion verwendest. Der Code sollte wie folgt aussehen:

    If Dir(sPfad & sDatei, vbNormal) <> "" Then
       Workbooks.Open (sPfad & sDatei)
    Else
       MsgBox "Den angegebenen Ordner und/oder die gesuchte Datei gibt es nicht!", 16, "Hinweis für " & Application.UserName
       Exit Sub
    End If
  3. Fehlerbehebung im Code: Achte darauf, dass der Code nicht an einer Stelle stoppt, wo es nicht nötig ist. Stelle sicher, dass alle Variablen korrekt definiert sind.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 52 - Dateiname oder Nummer falsch: Dieser Fehler tritt häufig auf, wenn der Pfad nicht korrekt ist oder die Datei nicht gefunden werden kann. Überprüfe die Variablen sPfad und sDatei.

  • Fehler: Leerer Pfad: Wenn sPfad leer ist (z. B. sPfad = ThisWorkbook.Path & ""), füge einen Backslash hinzu:

    sPfad = ThisWorkbook.Path & "\"
  • Falsche Dateiendung: Achte darauf, dass die Dateiendung korrekt ist. Wenn deine Datei eine .xlsm-Datei ist, stelle sicher, dass dies auch so angegeben ist.


Alternative Methoden

Wenn du weiterhin Probleme mit dem Laufzeitfehler 52 hast, kannst du folgende alternative Methoden ausprobieren:

  • Verwendung von Application.GetOpenFilename: Mit dieser Methode kannst du manuell eine Datei auswählen, was dir hilft, den Pfad zu überprüfen.

    Dim sDatei As Variant
    sDatei = Application.GetOpenFilename("Excel-Dateien (*.xlsm), *.xlsm")
  • Anwendung von FileDialog: Diese Methode ermöglicht eine benutzerfreundliche Auswahl von Dateien.

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    If fd.Show = -1 Then
      MsgBox "Ausgewählte Datei: " & fd.SelectedItems(1)
    End If

Praktische Beispiele

Hier sind einige praktische Beispiele, um den Laufzeitfehler 52 zu vermeiden:

  1. Korrekte Pfadangabe:

    Dim sPfad As String
    Dim sDatei As String
    sPfad = "T:\Prüflehren\"
    sDatei = "PT05_FB_0001_Aktions- und Maßnahmenplan_MB.xlsm"
  2. Fehlerbehandlung verbessern:

    On Error Resume Next
    If Dir(sPfad & sDatei) = "" Then
       MsgBox "Datei nicht gefunden!", vbExclamation
    End If
    On Error GoTo 0

Tipps für Profis

  • Verwende Option Explicit: Damit stellst du sicher, dass alle Variablen deklariert sind, was Fehler reduziert.

  • Debugging: Setze Haltepunkte und nutze die Debugging-Funktion in VBA, um den Ablauf deines Codes nachzuvollziehen.

  • Kombiniere Variablen für die Pfade: Wenn du mehrere Pfade verwendest, kann es hilfreich sein, diese in einer Funktion zusammenzufassen.


FAQ: Häufige Fragen

1. Was bedeutet Laufzeitfehler 52 in Excel VBA? Es handelt sich um einen Fehler, der auftritt, wenn ein angegebener Dateiname oder Pfad nicht korrekt ist oder die Datei nicht gefunden werden kann.

2. Wie kann ich den Laufzeitfehler 52 vermeiden? Stelle sicher, dass der Pfad sowie der Dateiname korrekt und vollständig angegeben sind. Achte auf die richtige Verwendung von Backslashes und Dateiendungen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige