Supportnet / Forum / Tabellenkalkulation
Fortlaufende Zahlen bei Dateinamen (Makros)
Frage
Hallo Leute,
ich kenne mich leider nicht mit Makros aus, deshalb brauche ich eure Hilfe :)
Folgendes Problem.
Ich habe Dateinamen in dem Format
"001dat-TCD - Channel A.esd" (esd = excel-datei).
Nun möchte ich, dass Excel jedes mal wenn ich einen Knopf drücke, einen Wert aus der Datei liest (Bsp.: =´001dat-TCD - Channel A.esd´!$E$2).
Wenn er dies getan hat, möchte ich dass er auf Knopfdruck eine Spalte weiterspringt und und die "001" um eine weitere Zahl erhöht, so dass er dann bei "002" ist usw., das soll bis maximal 300 gehen.
Wie sieht der codeschnipsel für die Erhöhung der Zahl im Dateinamen aus?
Vielen Dank im Vorraus für Eure Hilfe :)
Antwort 1 von Saarbauer
Hallo,
vor längerer Zeit wurde das Problem schon einmal behandelt, finde aber leider denThread nicht mehr.
Schon damals hatte ich vorgeschlagen den Dateinamen mit dem Tagesdatum zu versehen und somit wäre eine Sortierung möglich. Tadum in der Form: JJJJMMTT; falls erforderlich noch Uhrzeit
Gruß
Helmut
vor längerer Zeit wurde das Problem schon einmal behandelt, finde aber leider denThread nicht mehr.
Schon damals hatte ich vorgeschlagen den Dateinamen mit dem Tagesdatum zu versehen und somit wäre eine Sortierung möglich. Tadum in der Form: JJJJMMTT; falls erforderlich noch Uhrzeit
Gruß
Helmut
Antwort 2 von gast3
Den Namen in eine Zahl und einen String aufteilen. Dann die Zahl hochzählen und immer wieder zusammensetzen:
For n = 1 To 300
n = String(3 - Len(n), "0") & n
name = n & "dat-TCD - Channel A.esd"
MsgBox name
Next
Antwort 3 von Saarbauer
Antwort 4 von Mr.Fry
Hallo,
danke für die Antworten!
Das Problem ist, dass ich keine Macht über die Dateinamen hab. Die Dateien sind ein Messergebnis eines Programmes aus dem Labor, das Ergebnis kann bis zu 999 Dateien lang sein, da wird das umbennenen doch recht schwierig ;)
Aber ich werd das mit der Schleife probieren, danke!
danke für die Antworten!
Das Problem ist, dass ich keine Macht über die Dateinamen hab. Die Dateien sind ein Messergebnis eines Programmes aus dem Labor, das Ergebnis kann bis zu 999 Dateien lang sein, da wird das umbennenen doch recht schwierig ;)
Aber ich werd das mit der Schleife probieren, danke!
Antwort 5 von Event
Hallo
vergiß nicht, daß bei 255 Schluß ist
Gruß
Zitat:
Wenn er dies getan hat, möchte ich dass er auf Knopfdruck eine Spalte weiterspringt und und die "001" um eine weitere Zahl erhöht, so dass er dann bei "002" ist usw., das soll bis maximal 300 gehen.
Wenn er dies getan hat, möchte ich dass er auf Knopfdruck eine Spalte weiterspringt und und die "001" um eine weitere Zahl erhöht, so dass er dann bei "002" ist usw., das soll bis maximal 300 gehen.
vergiß nicht, daß bei 255 Schluß ist
Gruß
Antwort 6 von Mr.Fry
Hallo Leute,
ich hab nun folgendes Problem. Ich hab mir hier eine (wohlwissend NICHT funktionsfähige ;)) Schleife, kann mir jemand sagen wie ich die Variable "Name" als Dateinamen benutzen kann?
For n = 1 To 30
n = String(3 - Len(n), "0") & n
Name = n & "dat-TCD - Channel A.esd"
ActiveCell.FormulaR1C1 = "=´001dat-TCD - Channel A.esd´!R9C4"
Range("C4").Select
Next
Wie gesagt, ich arbeite zum ersten Mal mit Makros und hab sonst auch nur minimalste Programmierkenntnisse..
Ich möchte dass er statt ´001dat-TCD - Channel A.esd´ die oben deklarierte Variable "Name" nimmt, also er dort immer den Dateinamen der Schleife nimmt. Wie baut man die Variable ein? Ich konnte leider in der Hilfe nix finden :-/
Ich hoffe ihr könnt mir weiterhelfen!
Danke, Gruß
ich hab nun folgendes Problem. Ich hab mir hier eine (wohlwissend NICHT funktionsfähige ;)) Schleife, kann mir jemand sagen wie ich die Variable "Name" als Dateinamen benutzen kann?
For n = 1 To 30
n = String(3 - Len(n), "0") & n
Name = n & "dat-TCD - Channel A.esd"
ActiveCell.FormulaR1C1 = "=´001dat-TCD - Channel A.esd´!R9C4"
Range("C4").Select
Next
Wie gesagt, ich arbeite zum ersten Mal mit Makros und hab sonst auch nur minimalste Programmierkenntnisse..
Ich möchte dass er statt ´001dat-TCD - Channel A.esd´ die oben deklarierte Variable "Name" nimmt, also er dort immer den Dateinamen der Schleife nimmt. Wie baut man die Variable ein? Ich konnte leider in der Hilfe nix finden :-/
Ich hoffe ihr könnt mir weiterhelfen!
Danke, Gruß
Antwort 7 von gast3
Mhm ich hab echt null Ahnung, was Du da für kryptisches Zeug um den Namen herumgebaut hast. Kenne mich mit Excel auch kaum aus. Deshalb übersetze ich einfach mal ohne Verständnis:
wird zu:
Das Prinzip ist ganz einfach. Aus der Stringkonstanten wird ein Stück herausgenommen (nämlich der Name) und durch die Variable "name" ersetzt.
Dieses Zeichen ´ war wohl ein einstrichiges Anführungszeichen. Dass das verändert wird, ist ein Bug hier im Forum. Achte darauf wenn Du diesen Code kopierst!
ActiveCell.FormulaR1C1 = "=´001dat-TCD - Channel A.esd´!R9C4"
wird zu:
ActiveCell.FormulaR1C1 = "=´" & name & "´!R9C4"
Das Prinzip ist ganz einfach. Aus der Stringkonstanten wird ein Stück herausgenommen (nämlich der Name) und durch die Variable "name" ersetzt.
Dieses Zeichen ´ war wohl ein einstrichiges Anführungszeichen. Dass das verändert wird, ist ein Bug hier im Forum. Achte darauf wenn Du diesen Code kopierst!
Antwort 8 von Mr.Fry
Danke Gast3, es funktioniert :)
Kann mir noch jemand sagen wie ich in die Schleife
For n = 1 To 30
n = String(3 - Len(n), "0") & n
Name = n & "dat-TCD - Channel A.esd"
ActiveCell.FormulaR1C1 = "=´" & Name & "´!R9C4"
Range("C4").Select
einbaue, dass er nachdem er die Zahl um eins erhöht hat, eine Spalte nach rechts gehen soll und dann z.B. aus der Datei 002... den Wert aus der neuen Datei in die Zelle einträgt?
Danke für Eure Hilfe, ihr habt mir schon echt weitergeholfen :D
Kann mir noch jemand sagen wie ich in die Schleife
For n = 1 To 30
n = String(3 - Len(n), "0") & n
Name = n & "dat-TCD - Channel A.esd"
ActiveCell.FormulaR1C1 = "=´" & Name & "´!R9C4"
Range("C4").Select
einbaue, dass er nachdem er die Zahl um eins erhöht hat, eine Spalte nach rechts gehen soll und dann z.B. aus der Datei 002... den Wert aus der neuen Datei in die Zelle einträgt?
Danke für Eure Hilfe, ihr habt mir schon echt weitergeholfen :D

