< návrat zpět

MS Excel


Téma: PQ nad *.xlsb suborom, excel tables rss

Zaslal/a icon 18.2.2020 23:23

Ahoj, potreboval by som, aby subor, obsahujuci PQ, dokazal identifikovat excel tables v suboroch, z ktorych nacita data. PQ pri suboroch *.xlsx, *xlsm, ku ktorym sa pripaja, identifikuje objekty excel tables, pri suboroch typu *.xlsb vsak tabulky ignoruje.
Mate s tym niekto skusenost a viete, ako ten bug poriesit?

Zaslat odpověď >

#045949
MePExG
Podľa mňa je potrebné PQ použiť na identifikáciu údajov tak ako v .xls súboroch. Na to používam funkciu (pri adresároch) Excel.Workbook([Content], null, true), s ktorou zistím čo súbor obsahuje, ďalej filter na listy resp. názvy listov a potom spracovanie tabuliek včetne identifikácie hlavičky.citovat
icon #045955
avatar
Pre dotaz do *.xlsm suboru funguje syntax:

let
Source = Excel.Workbook(File.Contents("C:\Users\AL\Documents\pom.xlsm"), null, true),
xlTbl_CatalogueData_Table = Source{[Item="xlTbl_CatalogueData",Kind="Table"]}[Data]
in
xlTbl_CatalogueData_Table


PQ nacita Excel table xlTbl_CatalogueData, ta sa nachadza na liste CataloguedData, to ale nie je dolezite vediet, nakolko PQ identifikuje v pripade *.xlsm suboru rovno tabulku.

V pripade suboru *.xlsb vsak danu tabulku dotaz nenajde a konci chybou. Zapis dole sa oproti hornemu lisi v jedinej veci, tou je pripona suboru:
let
Source = Excel.Workbook(File.Contents("C:\Users\AL\Documents\pom.xlsb"), null, true),
xlTbl_CatalogueData_Table = Source{[Item="xlTbl_CatalogueData",Kind="Table"]}[Data]
in
xlTbl_CatalogueData_Table


Toto proste PQ nevezme, nakolko na tabulky v pripade *.xlsb suborov nevidi.

Chcem to nejako obist, ale asi nebude iny sposob, nez vsetky zdrojove subory ulozit ako *.xlsm. Dovod, preco ich mam ako *.xlsb, je ich velkost.citovat
#045959
elninoslov
Podľa toho, čo som čítal na niekoľkých fórach, nie si sám čo mu tento bug "spríjemňuje" život. Opravujú to už vraj 2 roky, tak by som sa príliš na nápravu nespoliehal. Všeobecná zhoda je zatiaľ na použití ExcelTable ako jediného objektu na liste a začínajúcej v A1. Číta to potom ako akýkoľvek iný list bez ExcelTable.
let
Source = Excel.Workbook(File.Contents("D:\Dokumenty\pom.xlsb"), null, true),
xlTbl_CatalogueData_Table = Source{[Name="CataloguedData"]}[Data],
#"Hlavičky so zvýšenou úrovňou" = Table.PromoteHeaders(xlTbl_CatalogueData_Table, [PromoteAllScalars=true])
in
#"Hlavičky so zvýšenou úrovňou"
citovat
icon #045960
avatar
@ elninoslov
Diky za snahu. Ano, (ne)opravuju to uz cca 2 roky, ak nie dlhsie. Bohuzial, umiestnenie tables v suboroch je dane a nezacinaju v A1, na niektorych listoch mam viac nez jednu tabulku.
No nic, proste, makrom zmenim subory na *.xlsm, holt, toto bude asi najrychlejsie riesenie pre tuto chvilu.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje