• 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.

Excel BOM overzicht

  • Onderwerp starter Onderwerp starter rut14
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

rut14

Nieuwe gebruiker
Lid geworden
5 nov 2012
Berichten
4
Ik ben aan het kijken of ik met behulp van excel een overzicht kan creeren om te kijken of alle files aanwezig zijn:

Ik krijg een onderdelen lijst in excel en ik moet checken of de tekeningen en meetrapporten aanwezig zijn in een bepaalde folder.
dat wil ik dus in de kolom achter de onderdelen lijst doen. Nu doe ik dit handmatig, maar dat moet makkelijker kunnen.

De naamvoering is genormeerd dus dat kan geen probleem zijn. Bekijk bijlage bomcheck.xlsx

Op internet kom ik wel bijvoorbeeld onderstaande function code tegen maar ik begrijp niet hoe ik dat moet intergreren in mijn excel file zodat ik in een overzicht de compleetheid van het pakket documentatie kan zien.

Code:
If Dir("full path filename") <> "" Then
MsgBox "File exists"
Else
MsgBox "File does not exist"
End If
 
Laatst bewerkt door een moderator:
De namen zijn genormeerd schrijf je, hoe dan ?
In welke folder staan de tekeningen, in welke folder de meetrapporten, welke naamvoering voor de tekeningen, welke naamvoering voor de meetrapporten ?
Op goed geluk zou het zo misschien lukken. Maak de nodige aanpassingen aan folders en achtervoegsels.
Code:
Sub tst()
 Const tekFolder = "G:\Testbestanden\"
 Const meetFolder = "G:\Testbestanden\"
 sq = Cells(1).CurrentRegion
 For i = 2 To UBound(sq)
    sq(i, 2) = IIf(Dir(tekFolder & sq(i, 1) & ".xls", vbDirectory) = vbNullString, "Niet Aanwezig", "Aanwezig")
    sq(i, 3) = IIf(Dir(meetFolder & sq(i, 1) & ".xls", vbDirectory) = vbNullString, "Niet Aanwezig", "Aanwezig")
 Next
 Cells(1).CurrentRegion = sq
End Sub
 
Laatst bewerkt:
Werkt in principe

Hallo Rudi,

Bedankt voor de snelle reactie, U heeft me al flink op pad gebracht.
Ik heb een zip file geplaatst met een situatieschets.
De drw en meet rapporten staan altijd 1 directory lager in separate folders. (dus in plaats van de vaste directory definitie zou ik ook relatief kunnen zoeken?)
De product code waarom alles draait is in 12 NC = XXXX YYY ZZZZZ (waarbij de laatse Z een revisie is). Als de zoek criteria dus de hele pad zoekt en de 12 nc uit kolom 1 dan geeft de macro een negatief antwoord omdat de originele filenaam van de tekening cw meetrapport langer is. (dus eigenlijk moet er getest worden op alleen de 12Nc en de rest afkappen)

Bekijk bijlage Report.zip
 
Laatst bewerkt:
Je uitleg klopt niet helemaal aangezien je in 12nc 33340_110_01 hebt maar ook 33340_110_02 dus kan je niet enkel op 12nc zoeken.
 
sorry dat ik wat onduidelijk de situatie heb uitgelegd.

wat ik bedoel is dat je uit kolom 1 de 12nc pakt om te vergelijken met de files in de folders drw & isr maar deze files beginnen met de 12 nc en hebben een extensie wat het soort document beschrijft: (110 is tekeningen en 170 is meetrapport)

kolom 1 dir
1234 567 89012 1234 567 89012_110-01_omschrijving

Maar eigenlijk vergelijk je nu variabele van kolom 1 met c:\..\report\drw\1234 567 89012_110-02_omschrijving. Dus moet je de variabele van kolom1 gaan vergelijken met "afgeknipte pad" en lengte van 14 karakters. (dus zonder _110-01_omschrijving). dan pak je daar ook de 12nc om te vergelijken.

Is dit duidelijker wat ik bedoel?
 
Code:
Sub tst()
 Const tekFolder = "C:\Temp\report\drw\"
 Const meetFolder = "c:\Temp\report\isr\"
 sq = Cells(1).CurrentRegion
 With CreateObject("Scripting.FileSystemObject")
    For i = 2 To UBound(sq)
        For Each fl In .GetFolder(tekFolder).Files
             If Left(fl.Name, Len(sq(i, 1))) = sq(i, 1) Then sq(i, 2) = "Aanwezig": Exit For
             If sq(i, 2) = "" Then sq(i, 2) = "Niet Aanwezig"
        Next
        For Each fl In .GetFolder(tekFolder).Files
             If Left(fl.Name, Len(sq(i, 1))) = sq(i, 1) Then sq(i, 3) = "Aanwezig": Exit For
             If sq(i, 3) = "" Then sq(i, 3) = "Niet Aanwezig"
        Next
    Next
 End With
 Cells(1).CurrentRegion = sq
End Sub

PS. Zorg er wel voor dat de kolommen met de resultaten leeg zijn alvorens de macro te draaien.
 
Bedankt, dit is precies wat ik zocht het werkt prima.

Ga maandag eens kijken op het werk of het voldoet of nog verder uit gewerkt dient te worden.
Ik kan me voorstellen dat men meer type documenten wil checken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan