PDA

Vollständige Version anzeigen : Doppelte Einträge finden in Variablenfeld


wohli75
18.03.2009, 15:25
Hallo Zusammen,

habe leider keine Idee mehr, wie ich folgendes Problem lösen könnt.

Lese in einer .xla in einen bestimmten Pfad Dateinamen + Inhalt jeder Datei aus (zb. Nummer , Datum und Zeit). Dabei kann es vorkommen, das mehrere Dateien die gleiche Nummer aber verschiedenes Datum und Uhrzeit haben. Die Dateien älteren Datums / Zeit möchte ich dann gerne löschen / verschieben.

Gibt es da eine einfache Funktion? Möchte nicht mit Schleifen arbeiten und immer wieder alles Durchsuchen um nicht alles auszubremsen...

Hat da einer eine Idee?

MfG Wohli75

Nepumuk
18.03.2009, 17:14
Hallo Wohli75,

mal ein Beispiel wie du so etwas machen könntest.

<nobr><span style="font-family:Courier New,Arial; font-size:9pt ;" ><span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span><br /><br /><span style="color:#000080"; >Private</span> <span style="color:#000080"; >Type</span> FILE_PROPERTYS<br />&nbsp;&nbsp;&nbsp;&nbsp;Number <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span><br />&nbsp;&nbsp;&nbsp;&nbsp;Path <span style="color:#000080"; >As</span> <span style="color:#000080"; >String</span><br />&nbsp;&nbsp;&nbsp;&nbsp;DateCreated <span style="color:#000080"; >As</span> Date<br />&nbsp;&nbsp;&nbsp;&nbsp;TimeCreated <span style="color:#000080"; >As</span> Date<br /><span style="color:#000080"; >End</span> <span style="color:#000080"; >Type</span><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Sub</span> Beispiel()</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Dim</span> objDictionary <span style="color:#000080"; >As</span> <span style="color:#000080"; >Object</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Dim</span> udtFile <span style="color:#000080"; >As</span> FILE_PROPERTYS, udtFileArray() <span style="color:#000080"; >As</span> FILE_PROPERTYS<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Dim</span> intIndex <span style="color:#000080"; >As</span> Integer, intCounter <span style="color:#000080"; >As</span> <span style="color:#000080"; >Integer</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Set</span> objDictionary = CreateObject(<span style="color:#800000"; >"Scripting.Dictionary"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Randomize<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'erzeuge 500 Dateien mit anderem Datum und anderer Nummer</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >For</span> intIndex = 1 <span style="color:#000080"; >To</span> 500<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >With</span> udtFile<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Number = Int((10 * Rnd) + 1) <span style="color:#008000"; >'mehr oder weniger zuf&auml;llige Nummer</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Path = <span style="color:#800000"; >"DeinPfad"</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.DateCreated = Date + Int((50 * Rnd) + 1) <span style="color:#008000"; >'mehr oder weniger zuf&auml;lliges Datum</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.TimeCreated = Time<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'pr&uuml;fen ob eine Datei mit dieser Nummer schon im Array ist</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >If</span> objDictionary.Exists(udtFile.Number) <span style="color:#000080"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'eine Datei mit dieser Nummer existiert - Datum pr&uuml;fen</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >If</span> udtFileArray(objDictionary.Item(udtFile.Number)).DateCreated &lt; udtFile.DateCreated <span style="color:#000080"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'&auml;ltere Datei durch neuere ersetzen</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udtFileArray(objDictionary.Item(udtFile.Number)) = udtFile<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'die Datei ist noch nicht im Array - Array vergr&ouml;&szlig;ern und Datei hinzuf&uuml;gen</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intCounter = intCounter + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Redim</span> <span style="color:#000080"; >Preserve</span> udtFileArray(1 <span style="color:#000080"; >To</span> intCounter)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;udtFileArray(intCounter) = udtFile<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'im Dictionary Nummer der Datei und Position im Array merken</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objDictionary.Add udtFile.Number, intCounter<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Next</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000"; >'Ausgabe aller Dateien mit dem jeweil h&ouml;chsten Datum</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >For</span> intIndex = <span style="color:#000080"; >LBound</span>(udtFileArray) <span style="color:#000080"; >To</span> <span style="color:#000080"; >UBound</span>(udtFileArray)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >With</span> udtFileArray(intIndex)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.Print .Number<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.Print .Path<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.Print .DateCreated<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Debug.Print .TimeCreated<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >With</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Next</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /><br /></span></nobr>

wohli75
18.03.2009, 19:22
Vielen Dank!

Werde das mal morgen ausprobieren, da mir zuhause einige Funktionen (dll's) die ich in den Makros nicht zur Verfügung stehen ;-)