Directory uitlezen

Status
Niet open voor verdere reacties.

bierens

Gebruiker
Lid geworden
4 aug 2006
Berichten
191
Hallo,

Ik had deze vraag eerst bij overige staan, omdat ik totaal niet wist waar ik het moest plaatsen.

Nu hebben ze me daar in de goede richting geholpen, en nu weet ik dat het met VBA in Excel zou moeten kunnen.

Nu heb ik daar geen kaas van gegeten, dus wil ik hier vragen of iemand het VBA stukje voor mij kan schrijven.

Wat is precies de bedoeling:

Ik heb een directory met allerlei tekstbestanden. Deze wil ik uitlezen (dir *.* /b) (zoals me al uitgelegd is), moeten hier verder nog haakjes ofzo aan toegevoegd worden?

Hierna wil ik iets als foreach bestand, lees het bestand en laat de eerste regel zien (findstr).

Is dit mogelijk, en zou iemand mij op weg kunnen helpen.

Alvast bedankt!
 
En hoe wil je die eerste regel per bestand getoond hebben? In het Excel document? En moet dat dan een nieuw document zijn of moet dat in een bestaand bestand gebeuren? Hoe wil je die routine starten? Met een knopje in het document?
 
Het mag inderdaad gewoon gestart worden met een knop, maar mag ook gewoon bij openen van het excel bestand.

Ik wil dan eigenlijk het volgende:

ditisdefile.txt - dit is de eerste regel uit de file
ditisfile2.txt - dit is de eerste regel uit file2

enz...
 
Wat je wilt snap ik. Maar waar wil je die regels getoond hebben? In het Excel blad, in een messagebox, in een combobox, of anders?
 
Het makkelijkste is denk ik in een Excelblad omdat ik er ook in wil kunnen zoeken.
 
Waarom Excel als het je alleen om tekst gaat.

Vertel eerst eens waarvoor deze exercitie uiteindelijk bedoeld is.
 
Laatst bewerkt:
Het hoeft niet perse in Excel, maar ik was begonnen met de vraag zonder dat ik wist waar ik dit in moest doen.

Toen hebben ze me wat geholpen, en dat was Excel gericht, maar het mag ook stand-alone zijn....

Het wordt een programmalijst, waar ik graag op de titel wil zoeken.
 
Dat kan dan beter in bijvoorbeeld VB Script, die dan een nieuw tekst document voor je aanmaakt met daarin de eerste regel uit de andere textbestanden.
 
Laatst bewerkt:
Dat zou inderdaad ook goed zijn, maar ik ken deze taal verder niet. Dus hoopte ik dat jullie iets in elkaar konden zetten. Als dit niet teveel werk is.
 
Wat bedoel je met programmalijst ?
Plaats een voorbeeld van een programmalijst.
Plaats een voorbeeld van een bestand waarvan je de eerste regel wil lezen.
 
De code zelf is niet zo moeilijk. Kijk maar eens of je hem kunt implementeren.

Code:
myPath = "H:\Microsoft Office\MS Outlook\"    ' Pad instellen.
myName = Dir(myPath & "*.txt")    ' Eerste waarde ophalen.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do While myName <> ""    ' Starten van de lus.
    Set objFile = objFSO.OpenTextFile(myPath & myName, 1)
        sInput = objFile.ReadLine     ' Eerste regel lezen
        MsgBox sInput
    objFile.Close
    myName = Dir    ' Volgende bestand ophalen.
Loop
 
Bedankt voor het meedenken allemaal.

Octafish, waar moet ik dit implenten? Ik heb het net via Excel geprobeerd, maar als ik hem dan uitvoer zie ik verder niets gebeuren...
 
Ik heb alleen de werkende code gepost; hoe je hem wilt gebruiken mag je uiteraard zelf weten. Hij doet overigens nog niks met wegschrijven naar een werkblad, dus die code moet er ook nog bij. Kun je vast wel uit een ander draadje halen, als je die nog niet hebt :). Maar dit werkt:

Code:
Sub ReadFile()
Dim sInput As String, myPath As String, myName As String
Dim i As Long
Dim objFSO As Object, objFile As Variant

Range("A1").Select

myPath = "H:\Microsoft Office\MS Outlook\Expenses Form to Word code29\"
myName = Dir(myPath & "*.txt")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do While myName <> ""
    Set objFile = objFSO.OpenTextFile(myPath & myName, 1)
        sInput = objFile.ReadLine
        ActiveCell.Offset(i, 0).Value = myName
        ActiveCell.Offset(i, 1).Value = sInput
        i = i + 1
    objFile.Close
    myName = Dir
Loop
    
End Sub
Dit is een complete macro die je zo kunt draaien.
 
Dit werkt inderdaad!!

Maar is het nu ook mogelijk om de eerste zoveel tekens te laten zien....
Als ik het bestand open ziet het er namelijk zo uit.

%  HIER STAAT DE TITEL

Dus zoals je ziet heel veel spaties en altijd 1 %
 
Hierna wil ik iets als foreach bestand, lees het bestand en laat de eerste regel zien (findstr).
Het scheelt enorm als je de vraag in één keer goed neerpent, dan krijg je ook een oplossing die (als je mazzel hebt) in één keer doet wat je vraagt... Dat is ook de reden dat we graag een aantal bronbestanden hebben, want dan zien we wat je zo'n beetje van plan bent. Nu hebben we die niet, dus krijg je een algemenere oplossing.
Spaties kun je er nog wel uitfilteren met REPLACE, en met LEFT kun je de startpositie van een string opgeven. Dus daar kun je de 1e regel mee opschonen.
 
Dit was ook mijn eerste insteek.

Nu ben ik aan het kijken om het wat netter te krijgen, en kwam dus bij dat replace en left uit. Hier ga ik zelf even mee stoeien.

Bedankt voor het meedenken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan