PDA

Vollständige Version anzeigen : Problem mit eingelesenen Pfaden


Dietmar123
11.05.2011, 10:26
Hallo,

ich habe ein großes Problem. Ich lese per VBA Dateien eines Verzeichnisses samt Pfadangaben in eine Tabelle ein, Ergebnis also so:

c:\pfad\datei1.doc
c:\pfad\datei2.doc
c:\pfad\datei3.doc
etc.

Diese Pfade stehen also in einer Tabelle in einem Feld. Wenn ich nun den Inhalt dieses Feldes einer Variablen zuordne und diese Variable dann verwende um per FileCopy diese Datei in ein anderes Verzeichnis zu kopieren, dann erhalte ich eine Fehlermeldung: "Laufzeitfehler '52': Dateiname oder -nummer falsch".

Wenn ich nun in die Tabelle gehe und einmal in dieses Feld mit dem Dateinamen klicke und mit ENTER bestätige, dann funktioniert das Kopieren. Ich habe mit LEN und msgbox die Länge des Feldinhalts mir anzeigen lassen und sehe, dass nach dem Bestätigen mit ENTER der Feldinhalt um 2 Zeichen kürzer ist (also dann die Tatsächliche Länge des Feldinhaltes hat). Ich vermutete das Backslash im Pfad, habe es auch schon mit Replace ersetzt, aber es tut sich nichts. Nur wenn ich das Feld einmal per Klick "angesteuert" habe und wieder verlasse, dann funktioniert es.

Hat jemand eine Idee, wie ich dieses Problem lösen kann?

Atrus2711
11.05.2011, 10:42
Hi,

lass dir den streikenden Dateinamen mal im Direktfenster ausgeben und setze "Start-/Endmarkierungen" drumrum. Etwa so:

Debug.print ">>>" & strDeineVariable & "<<<"

Damit kannst du evtl. die Zeichen erkennen.

Wenn das nicht hilft, lass dir z.B. mit asc(Right(strDeineVariable,1)) den Asciicode des letzten Zeichens zeigen. Damit kommst du auch an nichtdruckbare Zeichen (Absatzzeichen etc) ran.

Zur Ursache kann ich nichs sagen, solange du nicht verrätst, wie du die Dateinamen ermittelst bzw. in die Tabelle schreibst.

Dietmar123
11.05.2011, 11:16
Super, das war die Lösung!!!
Beim Einlesen des Dateinamens wird der Befehl "vbCrLf" mit übergeben. Ich habe nun bei der Variable ein Replace gemacht (Chr(13) + Chr(10)), und nun funktioniert es.

Nun werden auch gleich 2 Zeichen Länge weniger angezeigt, also die korrekte Länge.

Danke nochmals!

CptChaos
11.05.2011, 11:44
Ich würde die Bereinigung bereits beim Schreiben der Daten in die Tabelle vornehmen bzw. mich darum kümmern, dass hier keine vbCrLf mit eingetragen wird.

Zeig doch mal, wie Du die Werte einträgst; evtl. ist es einfacher dort zu optimieren.

Lanz Rudolf
11.05.2011, 11:54
Hallo
Zeige uns den Code den Du verwendest
und wie die Felder in der tabele und auch Variable Definiert sind