Discussion:
teil einer Var ermitteln
(zu alt für eine Antwort)
Ralf Oldenhage
2005-06-24 13:34:51 UTC
Permalink
Hallo zusammen,

ich habe aus einer GetOpenFilename Funktion Dateinamen, welche sowohl
vom Pfad, wie auch vom Dateinamen her stark variieren können.

Aber alle haben als Gemeinsamkeit, das sie sich durch eine 4stellige
Zahl im Dateinamen identifizieren lassen. Leider steht diese Zahl mal
am Anfang des Dateinamens und mal irgendwo anders.

Gibt es eine Möglichkeit diese 4 stellige Zal zu finden und zu
identifizieren unter der Voraussetzung, das es im gesamten Pfad keine
andere 4stellige Zahl gibt, so das ich je nach aufgerufener Datei in
unterschiedliche Prozeduren springen kann?

Besten Dank schonmal und Grüße Ralf
Ralf Oldenhage
2005-06-24 15:18:26 UTC
Permalink
Post by Ralf Oldenhage
Gibt es eine Möglichkeit diese 4 stellige Zal zu finden und zu
identifizieren unter der Voraussetzung, das es im gesamten Pfad keine
andere 4stellige Zahl gibt,
Ich hab mal meine selbstgeschnitzte Lösung angehängt, lieber wäre mir
aber, wenn ich die erwähnte Zahl nicht im Code vorgeben müsste,
sondern sondern in der InStr Funktion etwas im Sinne von ****
angeben könnte, damit jede exbeliebige 4stellige Zahl gefunden wird.


dateilänge = Len(datName)
wo = InStr(1, datName, "4663")
If wo <> 0 Then GoTo Weiter
wo = InStr(1, datName, "6808")
If wo <> 0 Then GoTo Weiter
wo = InStr(1, datName, "6002")
If wo <> 0 Then GoTo Weiter
wo = InStr(1, datName, "8103")
If wo <> 0 Then GoTo Weiter

Weiter:
If datName = False Then Exit Sub
Workbooks.Open (datName)

da = Mid(datName, wo, 4)

If da = 4663 Then GoTo reservierungen
If da = 6808 Then GoTo HE9
If da = 6002 Then GoTo externe
If da = 8103 Then GoTo leereLP
Dr. Eckehard Pfeifer
2005-06-24 15:39:43 UTC
Permalink
Hallo, als erstes setzt Du einen Verweis auf die Microsoft VB Script Regular
Expressions Bibliothek. Dann testet Du folgenden Code:

Sub Test()
MsgBox RegExpTest("\d\d\d\d", "aaa1234www")
End Sub


Function RegExpTest(patrn, strng) As String
Dim regEx As New RegExp
Dim myMatch As Match
Dim myMatches As MatchCollection

Dim retString As String

Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
Set myMatches = regEx.Execute(strng) ' Execute search.
For Each myMatch In myMatches ' Iterate Matches collection.
retString = retString & "Match found at position "
retString = retString & myMatch.FirstIndex & ". Match Value is '"
retString = retString & myMatch.Value & "'." & vbCrLf
Next
RegExpTest = retString
End Function

Der Code ist nicht von mir, Einzelheiten findest Du unter
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnclinic/ht
ml/scripting051099.asp

--

MfG EP
Entwicklung - Beratung - Training
(MS Certified Application Developer)
www.dr-e-pfeifer.net

Loading...