Dateinamen per VBA Marko ändern
Hallo
ich möchte per Doppelklick einen über eine Inputbox vorgegebenen Dateinamen ändern:
zum Hintergrund:
ich habe ein Excel Datenblatt, in dem mir automatisch alle Dateinamen eines vorgegebenen Ordners (Zelle "C1") aufgelistet werden
In Spalte C: Der Dateiname
In Spalte E: Der Pfad + Dateiname
In Spalte A wird angegeben ob die Datei noch unbearbeitet ist (d.h., wenn die Datei NICHT mit dem Text "bearbeitet" ANFÄNGT)
=WENN(LINKS(C272;10)<>"bearbeitet";"unbearbeitet";""))
Per Doppelklick auf einen Dateinamen in Spalte C öffnet sich eine Inputbox.
Der neue Dateiname wird in der Inputbox schon vorgegeben.
Bis hierher klappt alles bestens.
Nun möchte ich den alten Dateinamen mit dem Dateinamen aus der InputBox überschreiben.
Leider bekomme ich hier die Fehlermeldung: Datei nicht bekannt.
Weiß vielleicht jemand, was ich hier falsch mache?
ich möchte per Doppelklick einen über eine Inputbox vorgegebenen Dateinamen ändern:
zum Hintergrund:
ich habe ein Excel Datenblatt, in dem mir automatisch alle Dateinamen eines vorgegebenen Ordners (Zelle "C1") aufgelistet werden
In Spalte C: Der Dateiname
In Spalte E: Der Pfad + Dateiname
In Spalte A wird angegeben ob die Datei noch unbearbeitet ist (d.h., wenn die Datei NICHT mit dem Text "bearbeitet" ANFÄNGT)
=WENN(LINKS(C272;10)<>"bearbeitet";"unbearbeitet";""))
Per Doppelklick auf einen Dateinamen in Spalte C öffnet sich eine Inputbox.
Der neue Dateiname wird in der Inputbox schon vorgegeben.
Bis hierher klappt alles bestens.
Nun möchte ich den alten Dateinamen mit dem Dateinamen aus der InputBox überschreiben.
Leider bekomme ich hier die Fehlermeldung: Datei nicht bekannt.
Weiß vielleicht jemand, was ich hier falsch mache?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim strDatNam As String, strNewName As String, strZW As String
Dim strPath As String
Dim intZähler As Integer
strPath = ActiveSheet.Range("C1") & "\"
strDatNam = Cells(ActiveCell.Row, 3)
If Intersect(Target, Range("C3:C5000")) Is Nothing Then Exit Sub
Cancel = True
strNewName = InputBox("Dateiname ändern in", "Dateiname", "bearbeitet" & strDatNam)
Name strPath & strDatNam As strPath & strNewName ' hier erscheint die Fehlermeldung "Datei nicht bekannt"
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 356943
Url: https://administrator.de/forum/dateinamen-per-vba-marko-aendern-356943.html
Ausgedruckt am: 10.04.2025 um 20:04 Uhr
13 Kommentare
Neuester Kommentar

1
2
2
Set fso = CreateObject("Scripting.FilesystemObject")
pfadOhneDateiname = fso.GetParentFolderName("c:\pfad\datei.txt")
@specht
GetAbsoutePathName liefert in Deinem Beispiel aber den kompletten Pfad der Datei. @mreske sucht aber den Pfad des Verzeichnisses. Und außerdem: Die Fragestellung suggeriert mir, dass man hier besser bei den Basics bleiben sollte.
GetAbsoutePathName liefert in Deinem Beispiel aber den kompletten Pfad der Datei. @mreske sucht aber den Pfad des Verzeichnisses. Und außerdem: Die Fragestellung suggeriert mir, dass man hier besser bei den Basics bleiben sollte.

Sorry, war GetParentFolderName, korrigiert ...
?! Eher unterste Schublade...
Die Fragestellung suggeriert mir, dass man hier besser bei den Basics bleiben sollte.
Was sind daran keine Basics 
dann sollte man es doch einfach halten und rein mit VBA-Mitteln antworten. Sonst lernt er/sie doch nichts.
Das ist reines VBA. Und davon lernen kann er auch was 
Du meinst vielleicht ohne weitere Systembibliotheken, aber das Filesystemobject ist auf jedem Windows PC vorhanden. Somit ist das Definitionssache.
Wenn also mit reinen VBA Sprachinternen Befehlen dann hast du recht.
Von der Funktion her ist es aber VBA funktionsfähiger Code und woanders als auf einem Windows System wird er es sicher nicht ausführen
.
Wenn also mit reinen VBA Sprachinternen Befehlen dann hast du recht.
Von der Funktion her ist es aber VBA funktionsfähiger Code und woanders als auf einem Windows System wird er es sicher nicht ausführen