Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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
Inhaltsverzeichnis

In Verzeichnis das File mit höchster Revision

In Verzeichnis das File mit höchster Revision
ChrisW
Hallo Leute,
Folgendes Problem:
Ich rufe mit meinem Makro eine Datei aus einem Verzeichnis auf mit dem folgenden Namen:
"DateiRev23.xlsx"
Ich kenne die aktuelle Revisionsnummer (hier "23") nicht, was bisher jedoch egal war, da es nur eine Datei mit dem Namen "DateiRev?.xlsx" in diesem Verzeichnis gab und die Vorgänger Revision aus dem Verzeichnis gelöscht wurde.
Ich konnte den Namen also folgendermaßen ermitteln:
strFile = Dir("C:\SpezielleDaten\DateiRev?.xlsx", vbNormal)
Jetzt ist es aber so, das die Vorversionen alle im Verzeichnis verbleiben, d.h. es gibt die Datei "DateiRev20.xlsx", "DateiRev21.xlsx", "DateiRev22.xlsx", "DateiRev23.xlsx" im gleichen Verzeichnis.
Wie kann ich den Namen der letzten= höchsten Revision mit VBA ermitteln, um diese letzte revisionierte Datei dann öffnen zu können?
Vielen Dank für Eure Hilfe
Chris

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Dateiname der letzten Rev.Nr. per UDF anzeigen
11.01.2012 14:24:26
NoNet
Hallo Chris,
eine ganz simple Lösung ist die, die Dateien in einer eigenen UDF zu ermitteln - hier ein Beispiel :
Sub Testen()
'Zeigt die letzte Revisionsnr. der Datei an :
MsgBox strLetzteDatei("C:\SpezielleDaten\DateiRev?.xlsx")
End Sub
Function strLetzteDatei(strFileSpec As String)
Dim strA As String, strD As String, strT As String
strD = Split(strFileSpec, "\")(UBound(Split(strFileSpec, "\")))
Do
If strT = "" Then
strA = Dir(strFileSpec)
Else
strA = Dir
End If
If UCase(strA) Like UCase(strD) Then
strT = strA
Else
strA = ""
End If
Loop Until strA = ""
strLetzteDatei = strT
End Function
Gruß, NoNet
Anzeige
Funktioniert (wie immer)
11.01.2012 14:41:37
ChrisW
Hallo NoNet,
Super Klasse,
Wie gewohnt eine präzise, schnelle und vor allem einfache aber geniale Lösung.
Ich sollte mich mal gezielter mit "Functions" auseinandersetzen ;c)
Vielen Dank
Chris
Warum heißt die UDF strLetzteDatei, ...
11.01.2012 23:26:22
Luc:-?
…NoNet,
wo ihr Ergebnis doch gar nicht explizit As String vereinbart wird? ;->
Manche würden dann ja fncLetzteDatei schreiben, was ich zumindest bei UDFs für den TabBlattEinsatz besonders ulkig finde. Keiner möge mir hier was von UN erzählen, denn das ist das mitnichten, nur die von den WinPgmierern erfundene ziemlich sinnfreie Verballhornung derselben. Im Sinne des ursprgl Erfinders ist das ohnehin zumeist nicht (da wären es auch nur 2 Buchstaben!) und schon gar nicht im Sinne der Clear-Code-Anhänger.;-)
Gruß Luc :-?
Anzeige
@Luc: Function Test1 bis Test999 ....
12.01.2012 13:02:34
NoNet
Hey Luc,
ja tatsächlich : Woher kommt denn das str im UDF-Namen ;-)) ?
Damit streut man dem strebsamen User doch "Sand in die Augen" ;-)...
Ich musste mir ja einen neuen UDF-Namen ausdenken (Test1() bis Test999() sind leider schon belegt :->) und als Abgrenzung zu datLetzteDate() fiel mir (unkreativerweise) nur strLetzteDatei() ein.
Über die UN kann man denken wie man möchte - sie schaden ja grundsätzlich nicht und sind zumindest zur Unterschedung zu Schlüsselwörtern als Variablen- oder UDF-Namen nützlich (ganz grauenhaft und garantiert nicht dienlich finde ich es, wenn jemand ROW oder CELLS oder SHEET als Variablenname verwendet !!). Im Laufe der Zeit entwickelt wohl jeder seinen Stil (dieser kann sich auch verändern - wenn auch nur schwerlich) - und solange es keine strikten Vorgaben gibt (ich habe früher in COBOL74/85 programmiert, dort mussten die Codezeilen an Pos. 8 beginnen und ALLES musste genauestens deklariert werden !), kann sich der Programmierer ja "austoben" (nur bitte keinen "Spaghetti-Code" !!) wie er will.....
In diesem Sinne : Ciao, NoNet
Anzeige
Na, dann, weiter so u.auf ein Neues! ;-) Gruß owT
12.01.2012 14:03:31
Luc:-?
:-?
Apropos Spaghetti, NoNet; da gibt's ja auch ...
13.01.2012 19:56:26
Luc:-?
…Pgmme auf dem Markt, die machen das absichtlich aus einem beliebigen ordentl PgmCode. Nennt man Obfuszieren! In der Folge entsteht sog CrunchCode, der es Pw-Hackern und Dekompilierern schwer machen soll, den Code zu verstehen, was ja normalerweise die Voraussetzung für seine Assimilation in eigene Entwicklungen wäre. Übrigens bringt VBA von Hause aus 'ne Fkt mit, mit deren Hilfe so Einiges verschleiert wdn kann. Das wird natürlich in der VBE-Hilfe nicht erwähnt — muss man also selber drauf kommen! ;-)
Aber die PgmierEleven sollen es natürlich erst mal ordentlich lernen…
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige