Hent filoplysninger fra billeder og filer I denne vejledning bliver det gennemgået, hvordan man via Power Forespørgsel kan hente filoplysninger fra en mappe ind i Excel. Der skal opbygges følgende elementer: Forespørgsel fngetparameter Tabel Parameters Makro Vælg mappe Forespørgsel FileList Funktion File count Forespørgsel fngetparameter 1. Gå til fanen Data > Ny forespørgsel > Fra andre kilder > Tom forespørgsel. 2. Navngiv forespørgslen fngetparameter. 3. Vælg Hjem > Avanceret editor og indsæt nedenstående kode i vinduet Avanceret editor. (ParameterName as text) => let ParamSource = Excel.CurrentWorkbook(){[Name="Parameters"]}[Content], ParamRow = Table.SelectRows(ParamSource, each ([Parameter] = ParameterName)), Value= if Table.IsEmpty(ParamRow)=true then null else Record.Field(ParamRow{0},"Value") in Value
4. Tryk Udført og vælg Luk og indlæs forespørgselseditoren. Tabel Parameters 5. Navngiv et ark Parameters. 6. Opret overskrifterne Parameter og Value. Marker overskrifterne og vælg Hjem > Formater som tabel. Sæt markering i Tabellen indeholder overskrifter. 7. Markér tabellen og vælg Design. Navngiv tabellen Parameters i Tabelnavn. 8. Tilføj den første række i tabellen med File Path i kolonnen Parameter og tilføj en ny række i tabellen med File count i kolonnen Parameter. Vent med at tilføje værdier i kolonnen Value til senere.
Makro Vælg mappe Nu skal der oprettes en knap til at navigere til den ønskede mappe. 9. Tryk ALT + F11 ned for at åbne vinduet Microsoft Visual Basic for Applications (VBA vinduet). 10. Vælg Insert > Module og indsæt nedenstående kode i vinduet Module. Sub SelectFolder() SelectFolder Makro Dim myfolder As Object Dim strpath As String Dim ltest As Long, cn As WorkbookConnection Set myfolder = Application.FileDialog(msoFileDialogFolderPicker) With myfolder.title = "Vælg mappe for at starte...".allowmultiselect = False If.Show <> -1 Then Exit Sub End If strpath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) Range("C8").Value = strpath End With On Error Resume Next For Each cn In ThisWorkbook.Connections ltest = InStr(1, cn.oledbconnection.connection, "Provider=Microsoft.Mashup.OleDb.1", vbtextcompare) If Err.Number <> 0 Then Err.Clear Exit For End If If ltest > 0 Then cn.refresh Next cn End Sub 11. Ret cellereferencen C8 i VBA koden til cellen i kolonnen Value ud for rækken File Path i tabellen Parameters, hvor filstien skal angives.
12. Gem koden og luk VBA vinduet. 13. Vælg Udvikler > Indsæt > Kontrolelementer for formular > Knap og klik i arket Parameters, hvor knappen skal placeres. 14. Tildel makroen SelectFolder til knappen og test, at det virker. 15. Højreklik på knappen og vælg Rediger tekst til Vælg mappe. Forespørgsel FileList 16. Gå til fanen Data > Ny forespørgsel > Fra andre kilder > Tom forespørgsel. 17. Navngiv forespørgslen FileList. 18. Vælg Hjem > Avanceret editor og indsæt nedenstående kode i vinduet Avanceret editor. let SolutionPath = fngetparameter("file Path"), Kilde = Folder.Files(SolutionPath), #"Opdel kolonne efter afgrænser" = Table.SplitColumn(Kilde,"Name",Splitter.SplitTextByEachDelimiter({"."}, QuoteStyle.Csv, true), {"Name.1", "Name.2"}), #"Ændret type" = Table.TransformColumnTypes(#"Opdel kolonne efter afgrænser", {{"Name.1", type text}, {"Name.2", type text}}), #"Udvidet Attributes" = Table.ExpandRecordColumn(#"Ændret type", "Attributes", {"Size"}, {"Attributes.Size"}), #"Fjernede andre kolonner2" = Table.SelectColumns(#"Udvidet Attributes",{"Name.1", "Extension", "Date modified", "Attributes.Size", "Folder Path"}) in #"Fjernede andre kolonner2"
19. Tryk Udført og vælg Luk og indlæs forespørgselseditoren. 20. Navngiv det nye ark FileList. Funktion File count Nu skal der tælles, hvor mange filer, der hentes ind fra mappen. 21. Gå til tabellen Parameters og indsæt formlen =TÆLV(FileList!A:A)-1 i kolonnen Value ud for rækken File count.