Vraag & Antwoord

Programmeren

[VBA] Sorteren

5 antwoorden
  • Als beginnerling ben ik bezig met het maken van een sorteer functie met VBA in Word. Het is de bedoeling dat er een aantal tekstbestanden worden gelezen. Deze bevatten altijd 2 regels. Nu wil ik graag dat o.b.v. de eerste regel er nieuwe textbestanden worden weggeschreven waarbij de volgorde van wegschrijven afhangt van de eerste regel van elk bestand. Dit moet namelijk alfabetisch gebeuren. Stel ik heb: testbestand0001.txt, met op regel1: "Bedankt" en op regel2: "100" testbestand0002.txt, met op regel1: "Alvast" en op regel2: "50" Nu wil ik de bestanden weer wegschrijven waarbij alfabetisch gesorteerd wordt op de eerste regel van elk bestand, dus nu zou het resultaat moeten zijn: testbestand0001.txt, met op regel1: "Alvast" en op regel2: "50" testbestand0002.txt, met op regel1: "Bedankt" en op regel2: "100" Het lezen van tekstbestanden lukt uiteraard wel. Ik weet alleen niet hoe ik het voorelkaar krijg om daarna te sorteren. Al veel gezocht maar helaas het juiste antwoord nog niet gevonden. Is er iemand die me op weg kan helpen??
  • Het komt dus ruwweg neer op het hernoemen van de bestanden. Een ideetje hoe je het zou kunnen aanpakken: Bouw een array op met daarin de waarden van "regel1" en "regel2" Sorteer vervolgens deze array op "Regel1" Maak nieuwe bestanden aan voor elke rij in het array in een andere map bijvoorbeeld. (evt. verwijder je de oorspronkelijke bestanden daarna) Suc6,
  • Ik ga eerst zoeken naar het aantal testbestanden, dit kan namelijk verschillen. Daarna ga ik ze inlezen. Maar dan? Hoe kan ik dan sorteren? [code:1:6a21bb9fd3]Sub alfabet() Dim Regel1(100000) As String Dim Regel2(100000) As String Dim tmp As String Dim i As Integer Dim b As Integer bestanden = "C:\Mijn Documenten\" With Application.FileSearch .NewSearch .LookIn = bestanden .SearchSubFolders = False .FileName = "testbestand" .MatchAllWordForms = True .FileType = msoFileTypeAllFiles If .Execute() > 0 Then aantal = .FoundFiles.Count i = 1 For b = 1 To aantal Open .FoundFiles(b) For Input As #1 Line Input #1, tmp Line Input #1, tmp2 Regel1(i) = tmp Regel2(i) = tmp2 i = i + 1 Close #1 Next b[/code:1:6a21bb9fd3] Of ben ik zo verkeerd bezig.
  • helaas kom ik er nog niet uit... misschien toch iemand die me kan helpen????
  • Ik ken VBA niet. Je bent volgens mij op de goede weg. Dimensioneer eerst een twee dimensionele array FoundF(b,2) For b = 1 To aantal Open .FoundFiles(b) For Input As #1 Line Input #1, tmp Line Input #1, tmp2 FoundF(b,1) = tmp FoundF(b,2) = tmp2 Close #1 Next b Ik hoop dat VBA een standaard sorteer commando kent (ook voor 2 dimensionele array's natuurlijk) SORT FoundF(),2,1 of iets dergelijks. Het bovenstaande betekent dat op het tweede element opvolgend gesorteerd moet worden. Is dit wat? Of maak ik het van kwaad tot erger? Suc6 Abcott

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.