filteren bestandsgrootte

Status
Niet open voor verdere reacties.

jordi1986

Gebruiker
Lid geworden
25 apr 2007
Berichten
10
Beste forumbezoekers,

Ik heb door jullie hulp een ,bijna perfect, werkend programma. Toch heb ik nog een vraag. Bij het opzoeken van een file, worden alleen de *.txt files weergegeven. Prima! Alleen wil ik hier graag een uitbreiding op maken, namelijk dat alle tekstbestanden kleiner als 1 kb uit de lijst gefilterd worden, en niet worden weergegeven.

Ik heb dit nog niet op het forum terug kunnen vinden. Ook google is niet te ruim met informatie. Weten jullie hoe dit het beste aangepakt kan worden?

Alvast bedankt voor de hulp,

Groeten Jordi

Code:
Sub w()
    newfn = Application.GetOpenFilename("Text files (*.txt), *.txt", , "Choose a textfile", , False)

    If newfn = False Or InStr(newfn, " ") > 0 Then
        ' They pressed Cancel
        MsgBox "Stop because you did not select a file or file has a space in it"
        Exit Sub
    
    Else
        Workbooks.OpenText Filename:=newfn, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, Tab:=True, Semicolon:=True, FieldInfo:=Array(Array(1, 1), _
                Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True

        CommandButton2.Enabled = True

        'sheet name

        werkboeknaam = ActiveWorkbook.Name

        ActiveWorkbook.ActiveSheet.Name = werkboeknaam
        
    End If

End Sub
 
Dag Jordi,

Met onderstaande code zou het moeten lukken. Ook even verwijzen naar Microsoft Scripting Runtime.

map verwijst naar de map waar de bestanden in staan.

Code:
For each f in CreateObject("Scripting.FileSystemObject").GetFolder("map").Files
  if f.Size>1024 then if instr(f.name," ") = 0 then Workbooks.Open FileName:=f.Path: Exit For
Next

Gegroet

Axel.
 
Beste Axel,

Ik ben nu bezig geweest met het veranderen van je code. Het is me echter nog niet gelukt om het programma werkend te krijgen. In de verwijzingen van VBA heb ik 'microsoft scripting runtime' aangevinkt (heb ik dit goed gedaan?). Hoe verwijs ik hiernaar? moet dit op elke computer, die dit programma gaat gebruiken worden aangevinkt?

Met de huidige code kan ik wel textbestanden openen op de juiste manier, alleen worden de *.txt bestanden kleiner dan 1 kb niet uit de lijst gefilterd.

Ik hoop dat je me uit de brand kan helpen,

Alvast bedankt. Jordi

Code:
Dim objFS As New Scripting.FileSystemObject

Private Sub CommandButton1_Click()

newfn = Application.GetOpenFilename("Text files (*.txt), *.txt", , "Choose a textfile", , False)

    For Each f In CreateObject("Scripting.FileSystemObject").GetFolder("C:\hyperpro_tester\Data").Files
        If f.Size > 1024 Then If InStr(f.Name, " ") = 0 Then _
           Workbooks.OpenText Filename:=newfn, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
           TextQualifier:=xlDoubleQuote, Tab:=True, Semicolon:=True, FieldInfo:=Array(Array(1, 1), _
           Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True: _
        Exit For
    Next
End Sub
 
Dag Jordi,

Je zoekt nu naar een bestand > 1024 bytes en een bestand waarvan in de bestandsnaam geen spatie zit. Dit bestand is f. Maar als je het bestand laat openen dan gebruik je newfn. En dit bestand is natuurlijk niet op de eerder genoemde voorwaarden gevonden. Dus verander newfn in f.path en het gaat lukken.

Gegroet,

Axel.
 
Beste Axel.

Het wil nog niet lukken, na helaas veel proberen:( . Al ben ik nog een redelijke beginner wat programmeren betreft. Om voor mezelf en voor jou iets duidelijker zijn wil ik dit:
- Druk op knop en scherm opent om bestanden te openen (application.getopenfilename)
- Nu worden in de map (variabel, moet gezocht kunnen worden) alleen tekstbestanden en bestanden groter dan 1kb weergegeven.
- Vervolgens moet een bestand geselecteerd kunnen worden
- wanneer er op open wordt gedrukt zal het bestand openen en wordt de data in de tekstfile omgezet in verschillende cellen. (controle zal plaatsvinden of bestandsnaam een spatie bevat of wanneer op cancel wordt gedrukt, resultaat een msgBox)

Waar ik niet uit kom, is het filteren van zowel textbestanden als de textbestanden die groter zijn dan 1 kb.

Groeten Jordi

Ps. Je code werkt werkt wel, maar pakt het eerste bestand uit de map (elke extensie). Ik kan niet kiezen welk bestand en het programma schiet de fout in bij het drukken op cancel.
 
Dag Jordi,

Ik begrijp dat je verschillende mappen hebt waaruit je kiest. Dus eerst maak je een combobox voor de submappen .
Je kiest een map en daarna wordt een listbox gevuld met de bestanden die aan jouw normen voldoen.
Daarna kies je een bestand en met de commandknop geef je opdracht de tekst van dat bestand in Excel te zetten.

Tekstbestanden filter je met .txt en de grootte op .Size > 1024 (=1Kb)

Gegroet,

Axel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan