Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

VBA Filename mit Hex-Werten

Forumthread: VBA Filename mit Hex-Werten

VBA Filename mit Hex-Werten
02.05.2025 15:33:28
Joschi Witchcraft
Hallo Forum.

In einer Excel-Tabelle wird mir ein Filename richtig angezeigt. Wenn ich nun diese File mit VBA öffnen möchte, erhalte ich die Info, dass es diese File nicht gibt. Doch der Filename stimmt.

Nun habe ich herausgefunden, dass in der Excel-Tabelle der Filename "irgendwie anders" geschrieben ist: statt eines "ä" befindet sich dort der Hex-Wert "61A8".

Alle meine Versuche, diesen Hex-Wert durch ein "ä" zu ersetzen, waren ohne Erfolg.

WIe kann ich den Filenamen richtigstellen?

Gruß Joschi
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Filename mit Hex-Werten
02.05.2025 16:00:03
Onur
Einfach keine Umlaute in Dateinamen benutzen - nimm stattdessen "ae".
Warum den Dateinamen...
02.05.2025 20:46:23
Case
Moin, :-)

... richtigstellen? Der Fehler kommt eventuell häufiger vor? Und du willst ja per VBA die PDF öffnen? Dann so: ;-)

Option Explicit

Private Declare PtrSafe Function ShellExecuteW Lib "shell32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As LongPtr, _
ByVal lpFile As LongPtr, _
ByVal lpParameters As LongPtr, _
ByVal lpDirectory As LongPtr, _
ByVal nShowCmd As Long) As LongPtr
Public Sub Main()
ShellExecuteW 0, StrPtr("open"), StrPtr("C:\Temp\" & Tabelle4.Range("A1").Value), 0, 0, 1
End Sub
Public Sub Main_1()
Dim lngTMP As Long
For lngTMP = 1 To Len(Tabelle4.Range("A1").Value)
Debug.Print lngTMP, Mid(Tabelle4.Range("A1").Value, lngTMP, 1), AscW(Mid(Tabelle4.Range("A1").Value, lngTMP, 1))
Next lngTMP
End Sub

Public Sub Main_1() zeigt dir die Bestätigug von Fenneks Aussage im VBA-Editor im Direktfenster. ;-)

Das ist jetzt bezogen auf deine Beispieldatei (habe eine PDF Datei so benannt und in C:\Temp\ abgelegt). ;-)

Servus
Case
Anzeige
AW: Warum den Dateinamen...
02.05.2025 22:34:29
Joschi Witchcraft
Hallo Case.

Auch Dir recht herzlchen Dank für Deinen Vorschlag.

Bei mir hat Dein Code nicht funktioniert. Der hat erst dann funktioniert, als ich den Namen aus der Tabelle kopiert, und den Filenamen im Verzeichnis entsprechend geändert hatte. Der war nämlich bisher richtig geschrieben - ohne Unicode-Teile. Warum File und Filename unterschiedlich sind? Keine Ahnung. Und ich kann den Ersteller nicht mehr fragen. Möglicherweise hat das Programm, mit welchem ich die Files von einer CD kopiert hatte, den Dateinamen selbst korrigiert.

Warum ist es nicht möglich, den Code X"61A8" durch ein X"E4" zu ersetzen? Mit Replace funktioniert das nicht. Natürlich müsste mein Code dann bei Bedarf erweitert werden. wenn weitere Zeichen auftauchen. Bisher ist mir das nur bei "ä" aufgefallen. Und es gibt viele FIlenamen mit einem "ä", die keine Probleme machen.

Gru0 Joschi

Anzeige
Also ich kann...
02.05.2025 23:43:12
Case
Moin, :-)

... bei mir beide Dateien (mit 97+776 und nur mit 228) öffen. ;-)
Aber ich kann auch nur meine Testumgebung nehmen. ;-)

Du kannst schon austauschen. Z. B. so: ;-)

Option Explicit

Public Sub Main_x()
[B1] = fncUni("Bevollma" & ChrW(&H308) & "chtigung Walter Sch. 23.03.2019.pdf")
End Sub
Private Function fncUni(txt As String) As String
Dim objRegEx As Object
Set objRegEx = CreateObject("VbScript.RegExp")
objRegEx.Pattern = "a" & ChrW(&H308)
objRegEx.Global = True
fncUni = objRegEx.Replace(txt, "ä")
End Function


Da ist der UniCode bewusst eingebaut. Damit man sieht, dass er getauscht. Wird. Ausgabe in B1. ;-)

Der Text aus A1 mit "Public Sub Main_1()" - Ausgabe im Direktfenster: ;-)

Userbild

Der Text aus B1 mit "Public Sub Main_1()" - Ausgabe im Direktfenster: ;-)

Userbild

Die Funktion kann einfach auf Mehrere erweitert werden. ;-)

Schau mal, woran es bei dir liegt. ;-)

Servus
Case
Anzeige
AW: Also ich kann...
03.05.2025 03:20:43
Piet
Hallo

zum Umlaut "ä" fällt mir gerade eine üble Sache ein, wenn man Youtube Videos Online Convertieren lässt!
Da sieht man manchmal ein "ä" im Text, was in Wahrheit garkein echtes "ä" ist! Zusammen geziemertes "ä".
Löscht man dieses Schein "ä", verschwinden die Pünktchen, und es bleibt ein normales "a" im Text zurück.
Die Pünktchen werden zum Schein drübergelegt. Wie man das im UniCode definiert weiss ich nicht???

Upps, gerade getestet:
Das ist so eine üble Kombination. Löscht man das "ä", erscheinen die Pünktchen über dem "m"
Weiss ein Kollege da Rat, wie man das Gedöne jetzt in den Griff bekommt???

mfg Piet
Anzeige
Hast du einen...
03.05.2025 10:19:16
Case
Moin Piet, :-)

... Beispiellink aus Youtube - damit man das testen kann. ;-)

Und bei welchem Onlinedienst lässt du das konvertieren?

Servus
Case
File (trotz Unicode) umbenennen
03.05.2025 11:26:33
Joschi Witchcraft
Hallo Case, hallo Piet.

Ich kann mich noch an Zeiten erinnern, als es auf der (amerikanischen) Tastatur noch keine Umlaute gab. Aber es gab eine Taste für die beiden Punkte, welche z. B. aus einem "a" ein "ä" machten. Möglicherweise sind die Daten so entstanden. Diese Punkte gibt es auch in anderen Sprachen.

Die Lösung mit RegExp funktioniert und mein Problem ist damit fast gelöst.

Ich habe mich bisher darauf verlassen, dass das, was man sieht, auch immer richtig ist.

Ob die Fiile vorhanden ist, prüfe ich mit "Dir". Doch eine File mit einem Unicode-ä findet Dir nicht, auch wenn sie vorhanden ist.

Ich habe mir jetzt die Files genauer angeschaut und festgestellt, dass auch mehrere Filenamen den bekannten Unicode enthalten. Deshalb wollte ich die File nun umbenennen:

Name OldName As NewName

OldName ist der vollständige aktuelle Name
NewName ist der vollständige Name nach der Umstellung mit RegExp.

Doch das funktioniert nicht: Laufzeitfehler 53; Datei nicht gefunden.

Wie kann ich die File (trotz Unicode) umbenennen?

Wenn ich den (anzuzeigenden) Filenamen nicht mit RexExp umstelle und direkt mit "Fullname" öffne (ActiveWorkbook.FollowHyperlink FullName), dann wird das Dokument auch angezeigt. Allerdings erscheint eine Excel-Fehlermeldung, wenn die File nicht vorhanden ist. Das wollte ich mit der DIR-Prüfung ausschalten, und für wenige Sekunden einen Hinweis anzeigen. Nun ist mir auch klar, warum der Test bei Euch funktioniert hat.

Vielen Dank für die bisherige Unterstützung.

Gruß Joschi
Anzeige
AW: USA: kennen keine dt Umlaute
03.05.2025 11:30:52
Fennek
Hallo,

vielleicht hilft die Erinnerung, dass IT in den USA ursprünglich nur für den englischen Zeichensatz entwickelt wurde. Später wurde dann entdeckt, dass es auch andere Länder mit "Sonderzeichen" gibt. Das wurde dann mehr oder weniger halbherzig implementiert.

Deshalb der Rat: Immer nur die Standard-Zeichen verwenden, niemals Umläute.


mfg
Anzeige
AW: USA: kennen keine dt Umlaute
03.05.2025 16:51:56
Joschi Witchcraft
Liebe Profis und Ratgebenden.
.
Habt Ihr schon einmal daran gedacht, dass durch Eure Kommentare - die nicht zu einer Lösung führen - der Status nicht mehr "noch offen" ist (falls Ihr das nicht wieder aktiviert) und kaum noch beachtet wird? Und dann ggf. auch noch den Betreff ändern.

Auf die Frage in meinem letzten Post habe ich bisher keine Antwort erhalten. Vermutlich hat keiner meinen Thread angeschaut. Thread RIP.

Nachdem ich nun die Technik kenne, wie man den "Unicode" aus dem Namen herausbekommt, habe ich das Verzeichnis mit den zugehörigen Files (PDF, TXT, JPG, PNG) durchsucht, und deren Filenamen überprüft. Dabei habe ich insgesamt 37 solcher Filenamen festgestellt.

Ein Rename mit "Name OldName As NewName" funktioniert bei Filenamen, welche einen Unicode enthalten, nicht.

Ein aktiver IT'ler hat mir Scripting.FileSystemObject und MoveFile empfohlen. Und das funktioniert. Problem gelöst,

Gruß Joschi
Anzeige
Es gibt die...
03.05.2025 18:24:26
Case
Moin Joschi, :-)

... API-Funktion...
Private Declare PtrSafe Function MoveFileW Lib "kernel32" (ByVal lpExistingFileName As LongPtr, ByVal lpNewFileName As LongPtr) As Long

... die kann mit Dateinamen mit Unicodezeichen umgehen. ;-)

Servus
Case
Anzeige
AW: Es gibt die...
03.05.2025 23:18:23
Piet
Hallo Nico

das ist meine Standard Datei zum Ordner auflisten, noch mit dem alten Dir System. Der zeigt dir jeden Fehler an!
Der Dateiname wird "normal" aufgelistet, aber beim Zugriff auf FileLen und FileDate bekommst du Fehlermeldung.
Dann siehst du sofort wo -diese Daten- fehlen und weisst, in der Datei befindet sich ein Umlaut Problem.
https://www.herber.de/bbs/user/177332.xls

@Case zur Zeit verwende ich diesen Link für Videos. - https://en4.onlinevideoconverter.pro/61HS/youtube-downloader-mp4
ich weiss nicht ob es noch bessere gibt?? Leider habe ich keine alten Dateien mehr mit Umlaut Problemen.
Weil ich nach dem runterladen die Ordner neu aufliste sehe ich ja in welchem Ordner eine Problem Datei steckt.
Die benenne ich dann einfach von Hand um. Sind ja meisten nur 1,2,3 Dateien. Kommt ja nicht so oft vor.

mfg Piet
Anzeige
AW: Es gibt die...
03.05.2025 23:21:24
Piet
Nachtrag - in meiner alten Datei gibt es eine Übersicht für alle Tabellen. Da kann man sortieren, und auf doppelte Dateien prüfen.
Vielleicht …
03.05.2025 10:31:02
RPP63
… hat Drosophila Melanogaster zweimal auf den Bildschirm geschissen?
[Sorry, ich konnte nicht anders]

Gruß Ralf
AW: VBA Filename mit Hex-Werten
02.05.2025 16:16:19
Joschi Witchcraft
Hallo Onur.

Danke für den Hinweis. Das Problem: die Daten stammen nicht von mir. Und die Person, welche die Daten erzeugt hat, ist inzwischen verstorben. Ich muss also versuchen, die Daten beim Einlesen bzw. zum Zeitpunkt der Anzeige anzupassen.

Gruß Joschi
Anzeige
AW: VBA Filename mit Hex-Werten
02.05.2025 17:26:58
Piet
Hallo

dann lade doch bitte mal den Original Filenamen hoch. Vielleicht fällt uns dann was dazu ein.

mfg Piet
AW: VBA Filename mit Hex-Werten
02.05.2025 18:40:23
Joschi Witchcraft
Hallo Piet.

Ich habe eine neue Mappe erstellt. Die hat lediglich ein Blatt und davon ist nur die Celle A1 mit dem fehlerhaften Namen belegt.

Meine Testmappe: https://www.herber.de/bbs/user/177310.xlsx

Gruß Joschi
Anzeige
AW: VBA Filename mit Hex-Werten
02.05.2025 18:41:06
Joschi Witchcraft
Natürlich ist die Frage noch offen ....
AW: ä ist Unicode 97+776
02.05.2025 19:34:31
Fennek
AW: ä ist Unicode 97+776
02.05.2025 20:24:30
Joschi Witchcraft
Hallo Fennek.

Danke für den Hinweis. Mit Unicode habe ich keinerlei Erfahrung. Die Info hilft mir nicht weiter. Wie kann ich mit VBA-Mitteln den Namen richtig stellen?

An anderen Stellen in der Tabelle sind weitere ä-Umlaute. Mit denen gibt es allerdings kein Problem. Dort ist das "#" als X"E4" gespeichert.

Gruß Joschi
Anzeige
AW: ä ist Unicode 97+776
05.05.2025 12:15:49
Der Steuerfuzzi
Hallo,

vielleicht noch als Ergänzung zum Verständnis.

Es gibt sogenannte diakritische Zeichen, die dann mit Buchstaben kombiniert werden können. In Unicode ist das Zeichen mit dem Code 0x0308 (dezimal 776) der "Doppelpunkt" über dem a. In UTF-8 ist es dann 0xcc88:
https://codepoints.net/U+0308?lang=en

Das ist also ein gültiges Unicode-Zeichen und FileSystemObject kann wohl damit umgehen.

Grüße
Michael
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18