Fragen zum Umleitungsparameter ">" im DOS bei Umlauten in Pfadangaben

fdsonne

Legende
Thread Starter
Mitglied seit
08.08.2006
Beiträge
35.863
Ort
SN
Hallo Leute...

Zum Vorhaben:
Bei uns in der Firma existieren sogenante Planlisten. In diesen Planlisten sind Nummern zu Plänen hinterlegt.
Die Leute suchen dann in der Planliste nach diesen Plannummern. Soweit sogut, Problem ist nur, ich bräuchte nun ein Makro, welches mir anzeigt, ob in dem zugehörigen Ordner auf dem Fileserver der Plan mit der in der Planliste eigetragenen Plannummer vorhanden ist oder nicht.

Zu sagen wäre vllt noch, die Plannummer entspricht exakt dem Dateinamen der Datei auf dem Fileserver (also in der Planliste steht beispielsweise xxx und die Datei auf dem Fileserver heist dann xxx.dwg, xxx.plt oder auch xxx.pdf)

Zur Umsetzung:
Da auf den Rechnern Excel 2007 zum Einsatz kommt, kann man eine Dateisuche nicht mehr über die Application.FileSearch Methode realisieren...
Es gibt da zwar noch ne Alternative, die scheinbar auch funktioniert, aber irgendwie ist das grotten Lahm.
In meinem Testordner liegen knapp 4200 Files (ca 10GB) drin und das Macro mit der Excel Methode brauch um alle Files zu erfassen rund 10min, was eindeutig zu lange ist...

Also dacht ich mir, das geht auch mit dem DOS Befehl "DIR"
Mein Problem ist nun, wenn ich "DIR /S /B Dateiname.*" eingebe, bringt der mir in der Ansicht alle Files mit dem Dateinamen Punkt beliebiger Endung und zeigt das auch alles korrekt auf dem Monitor an.
Wenn ich diese Ausgabe aber nun mit dem Umleitungsparameter ">" (also "DIR /S /B Dateiname.* > %TEMP%\planliste.tmp") in eine Datei schreibe um diese dann mit dem Excel Makro auslesen zu können, macht der mir aus allen Umlauten wie Ä, Ö, Ü irgendwelche kryptischen Sonderzeichen...
Logischerweise stimmt dann der Pfad zur Datei nicht mehr überein und das Makro kann die Datei dann nicht starten lassen.

Gibt es irgendwie eine Möglichkeit das auch beim schreiben meiner Temporären Datei die Umlaute mitgeschrieben werden, oder geht das generell mit dem DOS Befehl nicht? Weil ohne den Umleitungsparameter da wird ja alles korrekt auf dem Bildschirm angezeigt.

Oder gibts vllt noch ne ganz andere elegantere Lösung direkt in Excel?
Vllt kann mir ja von euch hierbei jemand helfen... THX schon mal.

Grüße
fdsonne
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
hast du vielleicht die Moeglichkeit die Windows Power Shell zu nutzen? ist ist bei Umlauten meines Wissens deutlich weniger Problembehaftet.

Konkrete Tipps habe ich aber leider nicht.
 
mhh ich wüste nicht wie ich das machen kann...
Ich würde quasi im Excel Makro den Shell Befehl nutzen um Fremdprogramme starten zu können.
Und dann via ner Endlosschleife mit dem Errorhandler solange prüfen, bis das erstellen der Datei komplett fertig ist.

Nur führt der Shellbefehl im Makro die DOS Befehle scheinbar automatisch in der Windows Commandozeile aus... und da klappts halt leider nicht so wie ich will.

Und dabei ist diese Methode Pfeilschnell, ein Suchen der Files dauert hier dann keine 10 Sekunden für die oben genannte Datenmenge...
 
Das Problem ist, daß auf der Kommandozeile der OEM-Zeichensatz benutzt wird und nicht ANSI. Leider weiß ich nicht ob Excel die Möglichkeit hat die Zeichen von OEM nach ANSI zu konvertieren. Alternativ könntest du einen OEM zu ANSI-Konverter besorgen (Als Kommandozeilenprogramm !) und das noch in die Batch schreiben.
 
Mhh verstehe, bedeutet aber im Grunde, die Zeichen sind dennoch unterschiedlich, und ich müsste nur in meinem Makro eine Routine schreiben, welches mir den Pfad und Dateinamen nach diesen besagten Zeichen durchsucht und diese wieder umwandelt, richtig? Außer natürlich, VBA bietet dafür ne vorgefertigte Funktion oder ähnliches, glaub ich aber nicht.

Gibts dazu irgendwo ein Dokument im Netz, was mir zeigt, welches OEM Zeichen welchem ANSI Zeichen entspricht?
 
Neja das Problem an der Sache ist, die Exceltabelle muss unabhängig von anderen Tools sein, bzw. das eingesetzte Tool muss mit auf dem Rechner sein, wo die Exceltabelle und dessen Makros ausgeführt werden...

Habe jetzt erstmal was gefunden, zumindest scheint es im VB6 ein paar Funktionen diesbzgl. zu geben, Problem ist nur, diese funktionieren so wie mir scheint wohl nicht in Excel 2007...
Mal gucken.

Ein Externer Konverter würde zwar auch gehen, nur ich kann nicht garantieren, das dieser auch auf dem Rechner drauf ist, wo die Exceltabelle bearbeitet wird. Und das wird das Problem werden.
 
So ich hab jetzt erstmal paar brauchbare Codezeilen zusammen gesucht die scheinbar auch gut funktionieren in dem Excel 2007 VBA Zeug, eine andere Frage ist aber leider gleich mit aufgekommen.

Ich erzeuge eine Batch Datei mit meinem DIR Befehl und den nötigen Parametern + die Umleitung in eine Datei.
Das funktioniert auch soweit erstmal.
Problem ist, ich will diese Datei folgendermaßen im Tempverzeichniss des lokalen Rechners erstellen, was leider nicht geht. Wo ist der Denkfehler?
Code:
Open "%TEMP%\planliste.bat" For Output As filenr
        Print #filenr, "DIR " & ThisWorkbook.Path & "\" & Trim(ActiveCell.Text) & ".* /B /S > %TEMP%\Planliste.tmp"
Close filenr

Die erste Zeile funzt net so richtig, das %TEMP% frisst er irgendwie net?
Wie kann ich die Datei im Tempverzeichniss anlegen?
Muss doch irgendwie gehen...

Kann man mittels Funktion den Pfad des Tempverzeichnisses irgendwie auslesen?
Denn wenn ich hart den Pfad zum Tempverzeichniss rein schreibe, dann klappts, nur stört der sich irgendwie an der Variable %TEMP%
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh