Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: bahasu am Juni 03, 2019, 08:26:57

Titel: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: bahasu am Juni 03, 2019, 08:26:57
Hallo

Der im Titel genannte Fehler trat unter access2003 (win7 prof) bei der Zeile auf:
If Dir(Nach) = "" Then
,,Nach" enthielt den Dateinamen, der einen Doppelpunkt enthielt.
Unter https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/bad-file-name-or-number-error-52 finde ich die Bestätigung, dass ein ,,:" nicht erlaubt ist.
Trotzdem legt das Betriebssystem Ordner und Dateien mit diesem Zeichen an, wenn aus Outlook eine Email gespeichert wird.

Mit welcher VBA-Funktion kann ich:
1.   das Vorhandensein eines Ordners/einer Datei, der/die auch den ,,verbotenen" Doppelpunkt enthält, prüfen?
2.   Solche Dateien kopieren?

Harald

Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: ebs17 am Juni 03, 2019, 09:35:03
Was möglich ist, wird auch gemacht ... und wenn da eine Pfütze ist, "muss" man auch reintreten.

Ein Bezeichnungsregime, das solche Sorgen und Probleme von Haus aus vermeidet, ist wohl nicht denkbar?

Ansonsten: Win-API's sind am nächsten am Betriebssystem dran. Also könntest Du in diese Richtung spielen.
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: markusxy am Juni 03, 2019, 11:35:54
Bei mir scheitern alle Versuche einen Dateinamen mit Doppelpunkt anzulegen.
Sowohl aus Outlook heraus noch mittels CreateFile.
Es wird zwar eine Datei angelegt. Die enthält aber nur die Zeichen bis zum Doppelpunkt.
Also spannend wie das funktioniert hat.
Da hast du dir ein schönes Ei gelegt.

Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: bahasu am Juni 03, 2019, 11:36:42
Hallo und Danke

Zitat von: ebs17 am Juni 03, 2019, 09:35:03
Ein Bezeichnungsregime, das solche Sorgen und Probleme von Haus aus vermeidet, ist wohl nicht denkbar?
Dies ist genauso umsetzbar wie die Forderung an winzigweich, dass sie Programm schreiben, die sich an deren Konventionen halten: Warum verbieten die den ,,:", lassen ihn aber aus einer anderen Anwendung zu?

Zitat von: ebs17 am Juni 03, 2019, 09:35:03
Ansonsten: Win-API's sind am nächsten am Betriebssystem dran. Also könntest Du in diese Richtung spielen.
Ok, dieser Hinweis hat leider noch nicht den ,,Durchbruch" gebracht, da meine Recherchen auch im englischen Sprachraum mit dem Stichworten ,,api colon" nur bestätigt haben, dass auch andere dieses Problem haben. Dies war aber für mich nicht ,,inspirierend", was aber wohl an mir liegt.

Ich suche ein einfaches Rezept in der Art: Deklariere die Objekte und füge die Anweisungen hinzu. Und es sollte ohne die Krücke (langen Namen in Kurznamen umformen und den dann suchen) auskommen.

Harald
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: bahasu am Juni 03, 2019, 11:52:05
Hi Markus

Zitat von: markus888 am Juni 03, 2019, 11:35:54
Da hast du dir ein schönes Ei gelegt.
Das "Ei" haben andere gelegt.
Selber habe auch ich es noch nicht hinbekommen.
Vielleicht war das eine Möglichkeit, die nur bei einer früheren (vor 365) Version von Outlook möglich war.

Harald
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: MzKlMu am Juni 03, 2019, 12:07:03
Hallo,
kannst Du bitte mal ein Beispiel zeigen für einen Ordner mit dem :
Aber bitte nicht abschreiben, sondern kopieren.

Mir gelingt es jedenfalls auch nicht einen solchen Ordner anzulegen, auch nicht aus Outlook.
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: ebs17 am Juni 03, 2019, 12:49:11
ZitatWarum verbieten die den ,,:", lassen ihn aber aus einer anderen Anwendung zu?
Wenn ein Abgrund da ist, springst Du runter ...? Es muss ja einen Sinn geben, dass er da ist.
Die Forderung nach Entwicklerintelligenz würde ich nicht auf nur Microsoft beschränken.
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: PhilS am Juni 03, 2019, 13:44:00
Zitat von: bahasu am Juni 03, 2019, 08:26:57
Trotzdem legt das Betriebssystem Ordner und Dateien mit diesem Zeichen an, wenn aus Outlook eine Email gespeichert wird.
Der Doppelpunkt wird explizit als unzulässiges Zeichen für Windows Dateinamen (https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file) gelistet. Ich kann mir nicht vorstellen, dass es aus einer Anwendung wie Outlook möglich sein soll diesen trotzdem zu verwenden.

Kannst du 100%ig sicher bestätigen, dass es sich um einen Doppelpunkt handelt und nicht nur um ein Zeichen, dass aussieht, wie ein Doppelpunkt?

Siehe auch: https://stackoverflow.com/questions/10386344/how-to-get-a-file-in-windows-with-a-colon-in-the-filename
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: bahasu am Juni 03, 2019, 14:03:53
Hallo

Danke für den interessanten Link.
Du hast Recht: Ist ein Doppelpunkt  mit Leerzeichen: ":"

Aber auch dieses Zeichen gibt bei der anfangs erwähnten "Dir"-Anweisung einen Error.

Danke an alle.
Harald
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: bahasu am Juni 03, 2019, 14:09:34
Hallo Klaus

Das Zeichen habe ich in der vorherigen Antwort und auch hier einkopiert: ":".

Es war mir neu, dank Philipp wieder etwas Neues gelernt.

Harald
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: markusxy am Juni 03, 2019, 14:26:12
Vielleicht ist es ja ein Unicode Zeichen (weiß jetzt nicht seit wann Unicode bei Dateinamen geht).
Dann ist ein Doppelpunkt ja problemlos möglich.
Hast du versucht, die Namen auszulesen z.B. mit dem FileSystemObjekt und dann zu prüfen, welche Zeichen wirklich verwendet wurden?

Oder hast du den Original-Code um nachzusehen?
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: bahasu am Juni 04, 2019, 10:23:27
Hallo Markus

Ich hatte den Dateinamen via FileSystemObject ausgelesen und in eine access-Tabelle gespeichert.
Dort ist der Doppelpunkt als ASCII-code=58 angekommen. Davor und dahinter stehen Leerzeichen (ASCII=32).

Wenn ich aus dem Explorer den Teil des Dateinamens kopiere, erhalte ich: ...e R... {e und R sind Teile des Dateinamens, die hier keine Rolle spielen}.

Harald
Titel: Re: Laufzeitfehler 52 Dateiname oder -nummer falsch
Beitrag von: markusxy am Juni 04, 2019, 11:08:03
@bahasu,
sehr interessant.
Kannst du die Dateien via FileSystemObject umbenennen?