Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Dateiname ohne Suffix
24.11.2013 20:15:48
Thorsten_Z
Moin liebes Forum,
mit folgendem Codeschnipsell hier aus dem Forum habe ich den Dateipfad vom Dateinamen schon mal trennen können.
(Die Datei lese ich über den FileDialog ein)
Sub Trenne()
strfilename2 = Right(strFileName, InStr(1, StrReverse(strFileName), "\") - 1)
End Sub
so wurde aus "c:\..\name, vorname.7z" einfach "name, vorname.7z"
Soweit so gut.
wie bekomme ich nun das Suffix noch weg, damit ich nur noch "name, vorname" habe!?
Besten Gruß
Thorsten

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname ohne Suffix
24.11.2013 20:27:00
KlausF
Hallo Thorsten,
probier mal:
strfilename2 = Left(strfilename2, InStr(strfilename2, ".") - 1)
Gruß
Klaus

AW: Dateiname ohne Suffix
24.11.2013 20:45:25
Thorsten_Z
Hallo Klaus,
besten Dank. So geht es!
Gruß
Thorsten

AW: Dateiname ohne Suffix
24.11.2013 21:10:57
Luschi
Hallo Thorsten,
Da es mehrere Punkte in einem Dateinamen geben kann und nur der letzte Punkt maßgebend ist,
muß man es so machen:

Sub test1()
Dim strfilename2 As String
strfilename2 = "abc.def.ghi.txt"
Debug.Print InStrRev(strfilename2, ".", -1, vbTextCompare)
strfilename2 = Left(strfilename2, Len(strfilename2) - (Len(strfilename2) - _
InStrRev(strfilename2, ".", -1, vbTextCompare)) - 1)
Debug.Print strfilename2
End Sub
Gruß von Luschi
aus klein-Paris

Anzeige
geht ein bissl kürzer...
25.11.2013 00:44:10
Martin
So ist es ein wenig kürzer...
Sub test2()
Dim strfilename2 As String
strfilename2 = "abc.def.ghi.txt"
Debug.Print Left(strfilename2, (InStrRev(strfilename2, ".", -1, vbTextCompare) - 1))
End Sub

Viele Grüße
Martin

AW: geht ein bissl kürzer...
25.11.2013 05:23:36
Luschi
Hallo Martin,
genau, habe gestern 3 mal hin & her überlegt, aber auf den richtigen Dreh bin ich dann doch nicht gekommen.
Gruß von Luschi
aus klein-Paris

AW: geht ein bissl kürzer...
25.11.2013 09:07:44
Thorsten_Z
Moin Luschi und Martin,
vielen Dank für die Ergänzungen!
Ich habe mir, für den Notfall, den Code kopiert... :-)
Wünsche eine Gute Woche für euch
Gruß
Thorsten

Anzeige
Ersatz für die Funktion InStrRev?
25.11.2013 09:26:59
KlausF
Moin Luschi und Martin,
kennt ihr eigentlich einen Ersatz für die Funktion InStrRev?
Hintergrund: Billyboy hat diese Funktion für den Mac erst ab 2008 implementiert.
Da bekomme ich mit meiner 2003er natürlich Probleme.
Folgende Ersatzfunktion habe ich mal aus dem Netz gefischt,
erhalte aber kein Ergebnis wenn ich InStrRev gegen InStrRevNew tausche:
Function InStrRevNew(ByVal string1 As String, ByVal string2 As String) As Integer
InStrRevNew = 0
Do While InStr(string1, string2)
InStrRevNew = InStrRevNew + InStr(string1, string2)
string1 = Right(string1, Len(string1) - InStr(string1, string2))
Loop
End Function
Gruß
Klaus

Anzeige
@Klaus: Dann kauf dir endlich einen PC oder...
26.11.2013 19:05:52
Martin
verwende beim Mac folgenden Code:
Sub test2()
Dim strfilename2 As String, arrfilename As Variant
strfilename2 = "abc.def.ghi.txt"
arrfilename = Split(strfilename2, ".")
Debug.Print Left(strfilename2, Len(strfilename2) - Len(arrfilename(UBound(arrfilename))) -  _
1)
End Sub
Jetzt ist StrRev nicht mehr dabei, dafür ist eine Variable hinzugekommen und der Code ist nun etwas umfangreicher.
Viele Grüße
Martin

AW: @Klaus: Dann kauf dir endlich einen PC oder...
27.11.2013 12:00:13
KlausF
Moin Martin,
herzlichen Dank für die Funktion.
Ironischerweise ist auch Split vor 2008 nicht implmentiert. Dafür habe ich allerdings
einen funktionierenden Ersatz finden können und ihn einfach in deine Funktion eingebaut.
Funktioniert also. Danke nochmal.
[ Dann kauf dir endlich einen PC ]
Der Blick zurück? Niemals. ,-)
So long
Klaus

Anzeige
AW: @Klaus: Dann kauf dir endlich einen PC oder...
28.11.2013 14:38:48
Martin
Hallo Klaus,
kannst du für andere Forenmitglieder dein Makro mit der Split-Ersatzlösung hier posten? Mich interessiert die Alternative für Split ebenfalls.
Was meinst du mit Blick zurück? Unter welchem Betriebssystem werden "InstrRev" und "Split" vermisst? ;-)
Viele Grüße
Martin

Ersatzfunktion für Split
28.11.2013 14:50:54
KlausF
Hallo Martin,
anbei die Ersatzfunktion mit deinem Code:
Sub DateinameKorrekt()
Dim strfilename As String, arrfilename As Variant
Dim strNew As String
strfilename = "21.10.2013.xls"
arrfilename = SplitVBA(strfilename, ".")
strNew = Left(strfilename, Len(strfilename) - Len(arrfilename(UBound(arrfilename))) - 1)
MsgBox strNew
End Sub

Function SplitVBA(strText As String, Trenner As String)
Dim a As Long, b As Long, c() As String
Dim d As Long, vorher As Long
d = Len(Trenner)
vorher = 1
ReDim c(1 To Len(strText) \ d + 1)
Do
b = InStr(vorher, strText, Trenner)
If b = 0 Then
c(a + 1) = Mid$(strText, vorher, Len(strText))
If c(a + 1) = "" Then a = a - 1
Exit Do
Else
c(a + 1) = Mid$(strText, vorher, b - vorher)
End If
vorher = b + d
a = a + 1
Loop
ReDim Preserve c(1 To a + 1)
SplitVBA = c
End Function
Ich glaube, die Ersatzfunktion stammt von Michael Schwimmer ...
Gruß
Klaus

Anzeige
AW: Ersatzfunktion für Split
28.11.2013 23:07:05
Martin
Hallo Klaus,
ah, eine selbstgeschriebene Split-Function. Ich habe mir Michael Schwimmers Buch "Excel-VBA, Einstieg für Anspruchsvolle" gekauft. Ein sehr interessantes Buch, aber garantiert kein Buch für Einsteiger. Der Mann ist ein totaler Excel-Freak (...das ist nicht negativ gemeint!). Wenn es dann noch um API geht, ist er nicht mehr zu halten. Ich beneide ihn um sein Wissen...
Viele Grüße
Martin

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige