mit VBA Ordner öffnen und Dateinamen in Variable packen
#11
(14.09.2025, 11:19)RPP63 schrieb: Hast Du etwas Einfacheres (ich meine natürlich Geschickteres)?

Gruß Ralf

Wenn Excel 365 verwendet werden wird, sollte man auch die Funktion TEXTNACH in VBA verwenden können.
Da wäre die Formel dann einfacher:

WorksheetFunction.TextAfter(fullname, "\", -1)

Hab jetzt aber nicht geprüft, ob die Funktion auch unter diesem Namen im WF-Katalog steht

Hi

Wenn man für GetOprnFilename den Startpfad vorgeben will, dann funktioniert das so, sofern das Laufwerk einem Buchstaben zugeordnet ist:

ChDrive "D"
ChDir "D:\D-Dokumente\sonstiges\Testordner"
FullName =Application.GetOpenFilename(...)

Gruß Daniel
Antworten Top
#12
TEXTAFTER funktioniert nicht per WSF.
   

Es ginge mit Evaluate():
Evaluate("TEXTAFTER(""" & ThisWorkbook.FullName & """, ""\"", -1)")
da finde ich Dir(ThisWorkbook.FullName) etwas griffiger.

Disclaimer:
ThisWorkbook.FullName dient hier nur als Platzhalter …
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#13
Hallo,

jetzt wird es langsam aber etwas kurios, Dir() und Evaluate() für das Ermitteln eines Dateinamens aus einem absoluten Dateiangabe und ein "Exit Sub" fehlt da auch nicht.  42

Ein schönes Beispiel findet man z.B. hier:
https://vbaplanet.com/filedialogs.php

Den Dateinamen kann man dann einfach mit VBA Mitteln so ermitteln:
Code:
mid$(strFullFilename, InStrRev(strFullFilename, "\")+1)
 
Dir() seht zwar elegant aus, ist es aber nicht und sollte eigentlich, weil es nicht reentrant fähig ist, gar nicht erst verwendet werden. Mal abgesehen davon unterstützt Dir() m.W. keine Unicode-Zeichen in Dateinamen. 

Je nach Anforderung könnte man Ersatzweise auch das FSO dafür verwenden. 

Knobbi38
Antworten Top
#14
Code:
Sub M_snb()
  With Application.FileDialog(3)
    .InitialFileName = "D:\snb_\OF\*.*"
    If .Show Then MsgBox CreateObject("scripting.filesystemobject").getfile(.SelectedItems(1)).Name
  End With
End Sub
oder
Code:
Sub M_snb()
  With Application.FileDialog(3)
    .InitialFileName = "D:\snb_\OF\*.*"
    If .Show Then MsgBox Dir(.SelectedItems(1))
  End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 3 Nutzer sagen Danke an snb für diesen Beitrag:
  • PIVPQ, Crazy Tom, RPP63
Antworten Top
#15
moin,

ich sehe schon es gibt mehrere Wege mein Ziel zu erreichen
schade, dass ich nicht einen davon kannte  22

mfg Tom  19
Antworten Top
#16
(14.09.2025, 18:17)Crazy Tom schrieb: schade, dass ich nicht einen davon kannte  22

Mach Dir mal keinen Kopf, Du bist halt an dem Punkt wo wir vor Jahrzehnten waren.

Mut zur Lücke, Versuch macht kluch, mit der Zeit wird das. In ein paar Jahren bist Du an dem Punkt wo sich der Käse anfängt zu wiederholen.

Andreas.
Antworten Top
#17
Oder als Nachbrenner

Code:
Sub M_snb()
  With Application.FileDialog(3)
    .InitialFileName = "D:\snb_\OF\"
    If .Show Then MsgBox Replace(.SelectedItems(1), .InitialFileName, "")
  End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#18
(14.09.2025, 18:17)Crazy Tom schrieb: moin,

ich sehe schon es gibt mehrere Wege mein Ziel zu erreichen
schade, dass ich nicht einen davon kannte  22

mfg Tom  19

kein Problem. Es ist die Grundlage des Programmierens, dass man sich aus aus den Werkzeugen die man kennt, selber die Werkzeuge zusammenbastelt, die man braucht aber noch nicht hat.

Wenn man keine Spezialfunktionen (TextNach, InstrRev, Dir) für sowas kennt, würde man sich das selber programmieren
Code:
for i = Len(VollständigerDateiname) to 1 step -1
    if Mid(VollständigerDateiname, i, 1) = "\" then Exit for
    Dateiname = Mid(VollständigerDateiname, i, 1) & Dateiname
Next 
 
[-] Folgende(r) 1 Nutzer sagt Danke an slowboarder für diesen Beitrag:
  • Crazy Tom
Antworten Top
#19
moin,

mein Problem bestand weniger darin den Dateinamen aus dem kompletten Pfad zu ermitteln
sondern den festgelegten Ordner zu öffnen 
und durch klick auf die Datei die Information 
zum Dateinamen, oder von mir aus auch den Fullname, zu ermitteln
aus dem Fullname den Dateinamen zu holen, hätte ich schon hinbekommen

mfg Tom
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste