Microsoft Excel

Herbers Excel/VBA-Archiv

ChDir klappt nicht immer

Betrifft: ChDir klappt nicht immer von: Uschi
Geschrieben am: 07.09.2004 09:47:55

Hallo Forum,

mein Problem ist Folgendes:
Ich muß ständig *.txt Dateien (aus einem Export) per 'speichern unter' in *.xls Dateien umwandeln. Das wollte ich nun über ein Makro lösen. Nun bekomme ich aber immer wieder Fehlermeldungen, daß auf ein Verzeichnis nicht zugegriffen werden könnte. Wenn ich das Makro starte, bin ich in verschiedenen Verzeichnissen. Kann ich Excel nicht genau angeben, wo die *.xls Datei gespeichert werden soll? Der Name der Datei soll immer der Gleiche wie der der txt Datei sein, also: beispiel.txt -->beispiel.xls.
Bei folgendem Code kommt immer mal wieder die Fehlermeldung: "kann auf ... Verzeichnis nicht zugreifen". Manchmal klappt es aber auch.

Sub xls_speichern()

ChDir "C:\temp\"
ActiveWorkbook.SaveAs _
    FileFormat:=xlExcel7

End Sub


Danke schon mal!

Gruß

Uschi
  


Betrifft: CHDIR brauchst Du doch gar nicht ... von: Volker Croll
Geschrieben am: 07.09.2004 10:00:35

Hallo Uschi,

gib doch den Dateinamen bei SAVEAS direkt an. Siehe Auszug aus der Online-Hilfe:

SaveAs-Methode

Ausdruck.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodePage, TextVisualLayout)
...
Filename Variant optional. Eine Zeichenfolge, die den Namen der zu speichernden Datei angibt. Sie können den vollständigen Pfad angeben. Andernfalls speichert Microsoft Excel die Datei im aktuellen Ordner ...

Gruss
Volker Croll

www.crolltools.de


  


Betrifft: AW: CHDIR brauchst Du doch gar nicht ... von: Uschi
Geschrieben am: 07.09.2004 11:32:17

Aber den Dateinamen soll das Makro doch automatisch vergeben. Der kann sich ja schon ändern. Wie mache ich das denn dann?

Sub xls_speichern()

ActiveWorkbook.SaveAs _
    FileFormat:=xlExcel7

End Sub


So bekomme ich auch manchmal Fehlermeldungen.

Gruß
Uschi


  


Betrifft: ThisWorkbook.Name ... von: Volker Croll
Geschrieben am: 07.09.2004 11:45:06

Hallo Uschi,

dann muesste es so funktionieren (den Pfad bitte noch anpassen!):

ActiveWorkbook.SaveAs "C:\Eigene Dateien\" & ThisWorkbook.Name, FileFormat:=xlExcel7


Gruss
Volker Croll

www.crolltools.de


  


Betrifft: AW: ThisWorkbook.Name ... von: Uschi
Geschrieben am: 07.09.2004 12:43:20

Hallo Volker,

Danke für Deine Tips. Aber es klappt nicht wirklich.
Jetzt bekomme ich die Meldung, daß nicht unter dem Namen einer bereits geöffneten Datei gespeichert werden kann. Selbst wenn ich ein anderes Verzeichnis als das der .txt Datei auswähle.

Gruß

Uschi


  


Betrifft: Kann ich nicht nachvollziehen ... von: Volker Croll
Geschrieben am: 07.09.2004 12:57:24

Hallo Uschi,

beschreibe bitte nochmal genau Deinen Ablauf. So wie ich Dich bisher verstanden habe, muesste es funktionieren. Also liegt der Hase woanders im Pfeffer.

Gruss
Volker Croll

www.crolltools.de


  


Betrifft: AW: Kann ich nicht nachvollziehen ... von: Uschi
Geschrieben am: 07.09.2004 13:31:44

Also: Ich öffne eine txt Datei in Excel und möchte die mittels Makro als Excel-Datei mit dem gleichen Namen wie die txt Datei speichern. Speicherort soll C:\temp\ sein. Die ursprüngliche txt-Datei liegt auch in C:\temp. Das ist schon alles.


  


Betrifft: Und wo liegt das Makro? von: Volker Croll
Geschrieben am: 07.09.2004 15:09:55

Hallo Uschi,

zu welcher Datei gehoert denn das Makro, mit dem Du dies alles machst?

Gruss
Volker Croll

www.crolltools.de


  


Betrifft: AW: Und wo liegt das Makro? von: Uschi
Geschrieben am: 08.09.2004 07:56:28

Hallo Volker,

sorry das ich mich gestern nicht mehr gemeldet habe.
Das Makro liegt in der Personl.xls, wie alle meine Makros.

Gruß

Uschi


  


Betrifft: Dann so ... von: Volker Croll
Geschrieben am: 08.09.2004 18:57:49

Hallo Uschi,

war heute fast den ganzen Tag unterwegs, deshalb erst jetzt meine Antwort.

Klar, wenn das Makro in der Personal.xls liegt, kann es nicht funktionieren; denn ThisWorkbook.Name bezieht sich ja dann auf die Personal.xls!

Aber wenn Du die Text-Datei oeffnest, musst Du ja schon irgendwie den Dateinamen ausgelesen haben; vielleicht steht er ja sogar schon in einer Variablen (nennen wir sie mal NameDerDatei).

Dann muesste folgendes passen:

ActiveWorkbook.SaveAs "C:\Eigene Dateien\" & NameDerDatei, FileFormat:=xlExcel7

Solltest Du damit auch nicht weiterkommen, dann - wie schonmal erbeten - den genauen Ablauf, sprich zumindestens auch den Teil des Makros angeben, mit dem Du die Datei oeffnest.

Gruss
Volker Croll

www.crolltools.de


  


Betrifft: AW: Dann so ... von: Uschi
Geschrieben am: 09.09.2004 11:10:35

Hallo Volker,

Danke erstmal für Deine Antworten und Deine Mühe.
Ich lese den Dateinamen nirgends aus. Ich öffne die txt Datei ganz normal, manuell, nicht per Makro. Indem ich sie aus dem Windows-Explorer in das Excel-Fenster ziehe. Ich hatte gestern auch gemerkt, daß als ThisWorkbook.Name der Name der Personl.xls gewertet wurde. Ich weiß ehrlich gesagt nicht, wie ich noch genauer mein Vorgehen schildern soll. Vielleicht so:
Excel ist offen. Ich ziehe die txt Datei ins Excel Fenster. Sie ist also als txt geöffnet und in Excel als txt aktiv.

Und jetzt kommt der Teil, den ich gerne als Makro hätte:
Ich gehe auf speichern unter, wähle bei Dateityp Excel behalte den Namen der txt Datei bei und sage speichern. Und habe so aus einer beispiel.txt eine beispiel.xls gemacht.

Gruß

Uschi


  


Betrifft: Wir schaffen's schon noch ... von: Volker Croll
Geschrieben am: 09.09.2004 14:39:03

Hallo Uschi,

teste bitte mal:

ActiveWorkbook.SaveAs "C:\Eigene Dateien\" & Mid(ActiveWorkbook.Name, 1, Len(ActiveWorkbook.Name) - 4), FileFormat:=xlExcel7

Zur Erklaerung:
ActiveWorkbook.Name liefert den ganzen Dateinamen incl. Dateiendung (.txt)
Deshalb wird mit LEN die komplette Anzahl Zeichen des Dateinamens festgestellt und um 4 Zeichen (.txt) gekuerzt. Die Endung .xls haengt Excel durch "FileFormat:=xlExcel7" automatisch an.

Gruss
Volker Croll

www.crolltools.de


  


Betrifft: AW: Wir schaffen's schon noch ... von: Uschi
Geschrieben am: 10.09.2004 08:12:33

Hallo Volker,

es klappt!!!!!!!!!!!!! :-)
Super, und nochmals vielen Dank für Deine Geduld mit meinem Problem.
Sorry auch, daß ich mich immer nur so sporadisch gemeldet habe, aber ich hatte zwischendurch eingfach keine Zeit.

Gruß

Uschi


  


Betrifft: Gern geschehen ! (oT) von: Volker Croll
Geschrieben am: 10.09.2004 08:58:39