Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Laufzeitfehler 52 Dateiname oder -nummer falsch

Begonnen von bahasu, Juni 03, 2019, 08:26:57

⏪ vorheriges - nächstes ⏩

bahasu

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

Servus

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

markusxy

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.


bahasu

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
Servus

bahasu

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
Servus

MzKlMu

#5
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.
Gruß Klaus

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

PhilS

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 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
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

bahasu

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
Servus

bahasu

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
Servus

markusxy

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?

bahasu

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
Servus

markusxy

@bahasu,
sehr interessant.
Kannst du die Dateien via FileSystemObject umbenennen?