1. Download "Lijst winnende my bonus codes pdf" van
https://www.nationale-loterij.be/onze-spelen/euromillions/uitslagen-trekking/-------------------------------------------------------------------
2 Parameter instellen:
Sub TabelParameterMetUserName()
Dim wsParam As Worksheet
Dim GebruikersNaam As String
Dim MapNaam As String
Set wsParam = ThisWorkbook.Sheets("Parameter")
GebruikersNaam = Environ$("USERNAME")
MapNaam = "Downloads"
wsParam.Range("A1:B1").Value = Array("Parameter", "Value")
wsParam.Range("A2").Value = "File Path"
wsParam.Range("B2").Value = "C:\Users\" & GebruikersNaam & "\" & MapNaam & "\"
On Error Resume Next
Dim tbl As ListObject
Set tbl = wsParam.ListObjects("Parameter")
If tbl Is Nothing Then
Set tbl = wsParam.ListObjects.Add(xlSrcRange, wsParam.Range("A1:B2"), , xlYes)
tbl.Name = "Parameter"
Else
tbl.Resize wsParam.Range("A1:B2")
End If
On Error GoTo 0
End Sub
--------------------------------------------------------------------------------------------------
3 PQ code
let
// 1. Pad ophalen
BronTabel = Excel.CurrentWorkbook(){[Name="Parameter"]}[Content],
GeselecteerdPad = List.First(List.RemoveMatchingItems(Table.ToColumns(BronTabel){1}, {null, ""})),
// 2. Bestand zoeken
BronMap = Folder.Files(GeselecteerdPad),
FilterBestanden = Table.SelectRows(BronMap, each Text.StartsWith(Text.Lower([Name]), "euromillions-winnende-my-bonus-codes-")),
SorteerNieuwste = Table.Sort(FilterBestanden,{{"Date modified", Order.Descending}}),
CheckBestand = if Table.IsEmpty(SorteerNieuwste) then error "Geen PDF gevonden" else SorteerNieuwste{0}[Content],
// 3. PDF laden
Bron = Pdf.Tables(CheckBestand, [Implementation="1.3"]),
#"Rijen gefilterd" = Table.SelectRows(Bron, each Text.StartsWith([Id], "Table")),
// 4. Kolommen uitvouwen
AlleKolomNamen = List.Distinct(List.Combine(List.Transform(#"Rijen gefilterd"[Data], each Table.ColumnNames(_)))),
#"Data uitgevouwen" = Table.ExpandTableColumn(#"Rijen gefilterd", "Data", AlleKolomNamen),
// 5. Bedrag extraheren en omlaag invullen
#"Bedrag Toevoegen" = Table.AddColumn(#"Data uitgevouwen", "Bedrag", each if Text.Contains(Record.Field(_, AlleKolomNamen{0}), "€") then Text.AfterDelimiter(Record.Field(_, AlleKolomNamen{0}), "€") else null),
#"Omlaag Invullen" = Table.FillDown(#"Bedrag Toevoegen",{"Bedrag"}),
// 6. Filteren op rijen die data bevatten
#"Alleen Codes Behouden" = Table.SelectRows(#"Omlaag Invullen", each Text.StartsWith(Text.Trim(Record.Field(_, AlleKolomNamen{0})), "B") or Text.Contains(Record.Field(_, AlleKolomNamen{0}), "€")),
// 7. Hulpkolommen verwijderen vóór Unpivot
#"Hulpkolommen verwijderen" = Table.RemoveColumns(#"Alleen Codes Behouden", {"Id", "Name", "Kind"}),
// 8. Unpivot
#"Andere kolommen ontdraaid" = Table.UnpivotOtherColumns(#"Hulpkolommen verwijderen", {"Bedrag"}, "Attribuut", "BonusCodeRaw"),
// 10. De kolom 'Attribuut' verwijderen voor het eindresultaat
#"Kolommen verwijderd" = Table.RemoveColumns(#"Andere kolommen ontdraaid", {"Attribuut"}),
// 9. Opschonen en Filteren
#"Spaties Verwijderen" = Table.TransformColumns(#"Kolommen verwijderd", {{"BonusCodeRaw", Text.Trim, type text}}),
#"Echte Codes Filteren" = Table.SelectRows(#"Spaties Verwijderen", each Text.StartsWith([BonusCodeRaw], "B")),
#"Type Wijzigen" = Table.TransformColumnTypes(#"Echte Codes Filteren",{{"Bedrag", Int64.Type}, {"BonusCodeRaw", type text}}),
#"Resultaat" = Table.RenameColumns(#"Type Wijzigen",{{"BonusCodeRaw", "BonusCode"}}),
#"Dubbele waarden verwijderd" = Table.Distinct(Resultaat, {"BonusCode"})
in
#"Dubbele waarden verwijderd"