• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

moeilijk verhaal

Status
Niet open voor verdere reacties.

helpalex

Gebruiker
Lid geworden
13 mrt 2006
Berichten
45
HAllo,

Ik heb een vraag, en ik hoop dat jullie mij kunnen helpen:D

ik heb 100 logfiles .csv bestanden, (deze openen gewoon in excel). Alleen nu moet ik van al die 100 bestanden kollom A17 en A20 en A217 uitgefilterd hebben om te vergelijken. dus van bestand 1/100 moet A17 in een nieuw leeg bestand in kollom A1 komen en A17 en B1 en A217 in C1 van bestand 2/100 in A2 en B2 en C2. Op deze manier kan ik de verschillen vergelijken.

Ik hoop dat het duidelijk is.

Goeten

Alex
 
Alex

Maak een nieuw bestand aan, genaamd Samenvatting, met o.a. Blad1 als één van de bladen. Zie dat de CSV bestanden allemaal in een folder staan: C:\Files
Zorg er ook voor dat de info in elk bestand gehaald wordt uit het blad Blad1.

Plak dan deze code in Samenvatting.xls:

Code:
Sub Geefdeverschillen()

    Dim mypath As String, myfile As String, counter As Integer
    
    mypath = "C:\Files"
    myfile = Dir(mypath & Application.PathSeparator & "*.csv", vbDirectory)
    Application.ScreenUpdating = False
    
    Do While myfile <> ""
        If myfile = ThisWorkbook.Name Then GoTo ResumeSub:
        
        Workbooks.Open (mypath & "\" & myfile)
        
        counter = counter + 1
        
        With Workbooks("Samenvatting.xls").Sheets("Blad1").Range("A" & counter)
            .Offset(0, 0) = ActiveWorkbook.Sheets("Blad1").Range("A17")
            .Offset(0, 1) = ActiveWorkbook.Sheets("Blad1").Range("A20")
            .Offset(0, 2) = ActiveWorkbook.Sheets("Blad1").Range("A217")
        End With
        
        Workbooks(myfile).Close True
        
ResumeSub:
        myfile = Dir
    Loop
    
    Application.ScreenUpdating = True
End Sub

Voer de macro uit.

Lukt het? Ik heb het beperkt getest.

Je mag ook andere namen nemen, maar verander het dan in de code waar nodig.

Wigi
 
ik heb alle bestanden in c:/files gezet, alleen is in elk bestand de Blad naam de naam van het bestand, dus niet Blad1 hoe moet ik dat doen?

bedankt dat je mij weer eens helpt haha.

groet,

Alex
 
OK, dit houdt ook daar rekening mee.

Code:
Sub Geefdeverschillen()

    Dim mypath As String, myfile As String, myfileshort As String, counter As Integer
    
    mypath = "C:\Files"
    myfile = Dir(mypath & Application.PathSeparator & "*.csv", vbDirectory)
    Application.ScreenUpdating = False
    
    Do While myfile <> ""
        If myfile = ThisWorkbook.Name Then GoTo ResumeSub:
        
        Workbooks.Open (mypath & "\" & myfile)
        
        counter = counter + 1
        
        myfileshort = Replace(myfile, ".csv", "")
        
        With Workbooks("Samenvatting.xls").Sheets("Blad1").Range("A" & counter)
            .Offset(0, 0) = ActiveWorkbook.Sheets(myfileshort).Range("A17")
            .Offset(0, 1) = ActiveWorkbook.Sheets(myfileshort).Range("A20")
            .Offset(0, 2) = ActiveWorkbook.Sheets(myfileshort).Range("A217")
        End With
        
        Workbooks(myfile).Close True
        
ResumeSub:
        myfile = Dir
    Loop
    
    Application.ScreenUpdating = True
End Sub

Wigi
 
Laatst bewerkt:
Het lukt nog niet, misschien doe ik iets verkeerd met Macro, er gebeurt helemaal niets.

Tot nu toe heb ik een map gemaakt in c:\files met daarin alle .csv bestanden. Uitteraard allemaal een andere naam.

Ik heb een nieuw leeg excel bestand aangemaakt met de naam Samenvatting waarin blad1 in staat. toen Alt F11 daarin heb ik links bovenin in Blad1 (Blad1) dubbelgeklikt en toen de formule geplakt. Op het Play knopje gedrukt. en toen gebeurde er niets.


Doe ik iets verkeerd of moet ik iets instellen?

Groet,

alex
 

Bijlagen

Laatst bewerkt:
In Samenvatting.xls voeg je een nieuwe module in. Kopieer de code opnieuw van het forum en plak de code in de nieuwe module. Doe Play. Wat dan?
 
Laatst bewerkt:
In Samenvatting.xls voeg je een nieuwe module in. Kopieer de code opnieuw van het forum en plak de code in de nieuwe module. Doe Play. Wat dan?



krijg nu deze fout melding: Fout 1004 tijdens uitvoeren c:\FilesReportCOMPUTER.csv kan niet worden gevonden

fout opsoring in de macro is dit: Workbooks.Open (mypath & "" & myfile)
 
krijg nu deze fout melding: Fout 1004 tijdens uitvoeren c:\FilesReportCOMPUTER.csv kan niet worden gevonden

fout opsoring in de macro is dit: Workbooks.Open (mypath & "" & myfile)

c:\FilesReportCOMPUTER.csv is één van de 100 bestanden die in het bestand c:\Files is opgeslagen. wel raar dat het niet c:\files\FilesReportCOMPUTER.csv moet zijn.
 
Laatst bewerkt:
ik heb tussen de "" en \ neer gezet nu doet hij wel. TOPPPPPPPP

Nog wel één klein probleempje. er staan , of ,, of ,,, tussen de gegevens. De macro plaatst alleen wat voor de comma's staat zien, en de rest niet.

Nog een paar extra vraagje's: kan ik ook meerdere cellen in Samenvatting Blad1 cel A1 en B1 en C1 krijgen? bijv. uit de csv bestanden cellen A17enB17enC17? die info hoort namelijk bij elkaar.
en dat in kollom A1:A100 dan de bestand namen komen. weet ik ook waar de gegevens van zijn. Alleen klopt de macro dan ook niet meer denk ik

Ik hoop niet dat ik teveel van je vraag.

Groeten,

Alex
 
Laatst bewerkt:
Nog een paar extra vraagje's: kan ik ook meerdere cellen in Samenvatting Blad1 cel A1 en B1 en C1 krijgen? bijv. uit de csv bestanden cellen A17enB17enC17? die info hoort namelijk bij elkaar.

en dat in kollom A1:A100 dan de bestand namen komen. weet ik ook waar de gegevens van zijn.

Code:
Sub Geefdeverschillen()

    Dim mypath As String, myfile As String, myfileshort As String, counter As Integer
    
    mypath = "C:\Files"
    myfile = Dir(mypath & Application.PathSeparator & "*.csv", vbDirectory)
    Application.ScreenUpdating = False
    
    Do While myfile <> ""
        If myfile = ThisWorkbook.Name Then GoTo ResumeSub:
        
        Workbooks.Open (mypath & "" & myfile)
        
        counter = counter + 1
        
        myfileshort = Replace(myfile, ".csv", "")

        With Workbooks("Samenvatting.xls").Sheets("Blad1").Range("A" & counter)

.Offset(0, 0) = ActiveWorkbook.Name
ActiveWorkbook.Sheets(myfileshort).Range("A17").Resize(,3).Copy .Offset(0, 1)
ActiveWorkbook.Sheets(myfileshort).Range("A20").Resize(,3).Copy .Offset(0, 4)
ActiveWorkbook.Sheets(myfileshort).Range("A217").Resize(,3).Copy .Offset(0, 7)
        End With
        
        Workbooks(myfile).Close True
        
ResumeSub:
        myfile = Dir
    Loop
    
    Application.ScreenUpdating = True
End Sub

Vergeet niet de \ goed te zetten want dit is een probleem op dit forum.

Ongeteste code

Wigi
 
Laatst bewerkt:
Joepie

Jij wil niet weten hoe zo'n big smile:D ik kreeg toen na Play alles op z'n plek stond..

Mijn dank is groot.

Alex
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan