PDA

Vollständige Version anzeigen : Wie zerlege ich komplette Pfade in Einzelteile?


TommyK
30.01.2005, 09:57
Hallo,

da diese Frage immer wieder gestellt wird hab ich mal ein allegemeine Funktion erstellt mit der der es möglich ist komplette Dateipfade in seine Einzelteile zu zerlegen:
Laufwerk
Pfad
Dateiname
Extension
Ihr müsst nur den gesamten Code in ein Modul Eurer DB kopieren:
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Public</span> <span class="TOKEN">Type</span> SPLITPATH
sDrive <span class="TOKEN">As</span> <span class="TOKEN">String</span>
sPath <span class="TOKEN">As</span> <span class="TOKEN">String</span>
sFile <span class="TOKEN">As</span> <span class="TOKEN">String</span>
sExt <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">End</span> <span class="TOKEN">Type</span>
&nbsp;
<span class="TOKEN">Public Function</span> fileSplit(<span class="TOKEN">ByVal</span> sFilePath <span class="TOKEN">As</span> <span class="TOKEN">String</span>) <span class="TOKEN">As</span> SPLITPATH
<span class="REM">' die Prozedur zerlegt den Dateinamen sFilePath in LW, Path, Name, Extension</span>
<span class="TOKEN">Dim</span> I <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
&nbsp;
<span class="TOKEN">With</span> fileSplit
<span class="TOKEN">If</span> Mid$(sFilePath, 2, 1) = &quot;:&quot; <span class="TOKEN">Then</span>
.sDrive = Left$(sFilePath, 2)
sFilePath = Mid$(sFilePath, 3)
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">For</span> I = Len(sFilePath) <span class="TOKEN">To</span> 1 <span class="TOKEN">Step</span> -1
<span class="TOKEN">If</span> Mid(sFilePath, I, 1) = &quot;\&quot; <span class="TOKEN">Then</span> <span class="REM">' keine Extension vorhanden</span>
.sExt = &quot;&quot;
<span class="TOKEN">Exit For</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">If</span> Mid(sFilePath, I, 1) = &quot;.&quot; <span class="TOKEN">Then</span>
.sExt = Right(sFilePath, Len(sFilePath) - I)
sFilePath = Left(sFilePath, I - 1)
<span class="TOKEN">Exit For</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">Next</span> I
I = Len(sFilePath)
<span class="TOKEN">If</span> InStr(sFilePath, &quot;\&quot;) &lt;&gt; 0 <span class="TOKEN">Then</span>
<span class="TOKEN">While</span> Mid(sFilePath, I, 1) &lt;&gt; &quot;\&quot;
I = I - 1
<span class="TOKEN">Wend</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
.sPath = Left(sFilePath, I)
.sFile = Right(sFilePath, Len(sFilePath) - I)
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)
Der Aufruf könnte dann so aussehen:
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre> <span class="TOKEN">Dim</span> tSplitPath <span class="TOKEN">As</span> SPLITPATH
tSplitPath = fileSplit(&quot;I:\Downloads\DB Serienbrief\DB Serienbrief.mdb&quot;)
MsgBox &quot;Laufwerk: &quot; &amp; tSplitPath.sDrive &amp; vbNewLine &amp; _
&quot;Pfad: &quot; &amp; tSplitPath.sPath &amp; vbNewLine &amp; _
&quot;Dateiname: &quot; &amp; tSplitPath.sFile &amp; vbNewLine &amp; _
&quot;Extension: &quot; &amp; tSplitPath.sExt</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)
Es wäre genau so möglich UNC-Pfade zu zerlegen nur das hier bei Drive nichts zurück gegeben wird.
z.B.:
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre> <span class="TOKEN">Dim</span> tSplitPath <span class="TOKEN">As</span> SPLITPATH
<span class="TOKEN">Dim</span> sFilename <span class="TOKEN">As</span> <span class="TOKEN">String</span>
tSplitPath = fileSplit(&quot;\\Test\Test1\bild.jpg&quot;)
sFilename = tSplitPath.sFile &amp; &quot;.&quot; &amp; tSplitPath.sExt</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)
Hier wäre der Inhalt der Variablen "sFilename"= "bild.jpg"

Diese Funktion hat auch den Vorteil das sie ohne Zusatz Code auch unter A97 läuft da dort z.B. die Funktion "InStrRev" nicht verfügbar ist.