Avatar billede stc Nybegynder
25. januar 2005 - 15:49 Der er 11 kommentarer

XML data i Excel Pivot tabel

Hej

Jeg har nogle data i et XML dump, som jeg godt ville lave en pivottabel på.
Jeg kan fint få Excel (2003) til at åbne denne base og lave spændende ting med den, men men men jeg kan ikke tilgå xml filen direkte fra en pivottabel.
Der kan man jo kun vælge ODBC eller Excel datakilder, og jeg kan ikke finde nogle steder det at åbne XML....

Er der nogle af jer som har nogle gode ideer eller måske endda allerede har prøvet noget af den slags... Jeg kan ikke blot importere disse XML data først, da der er langt mere end 65000 rækker !!!
Avatar billede bak Seniormester
25. januar 2005 - 21:00 #1
hvis vi ser spm. i forlængelse af det andet xml spm. så vil denne makro taget fra xl-dennis kombineret med pivot kunne hente data ind i en IKKE opdaterbar pivottabel.
Jeg har lavet makroen slutte der hvor pivottabellen lige er sat. Ingen felter på endnu.
Man kan bruge metoden hvis man lader makroen lave hele pivotdelen også, ved at man først sletter den gamle pivot og laver en ny på denne måde.

Sub Read_XML_Data_()
  Dim pc As PivotCache
  Dim pt As PivotTable
  Dim rst As ADODB.Recordset
  Dim fld As ADODB.Field
  Dim stCon As String, stFile As String
  Dim i As Long, j As Long
  Set rst = New ADODB.Recordset
  stFile = "C:\report.xml"

  stCon = "Provider=MSPersist;"
  With rst
    .CursorLocation = adUseClient
    .Open stFile, stCon, adOpenStatic, adLockReadOnly, adCmdFile
    Set .ActiveConnection = Nothing
    i = .Fields.Count
  End With
  '*******PIVOT********
  Set pc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
  Set pc.Recordset = rst
  Worksheets.Add before:=Sheets(1)
  Set pt = ActiveSheet.PivotTables.Add(PivotCache:=pc, tabledestination:=Range("A3"))

End Sub
Avatar billede bak Seniormester
25. januar 2005 - 23:44 #2
Denne her kan bruges til at opdatere/refreshe pivoten, så man ikke behøver slette den.

Sub UpdateMyPivotTableFromxmlFile()
Dim pc As PivotCache
Dim pt As PivotTable
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set pc = ActiveWorkbook.PivotCaches(1)
Set pt = ActiveSheet.PivotTables("Pivottabel1")

rs.Open "c:\report.xml", "Provider=MSPersist;", adOpenStatic, adLockReadOnly, adCmdFile
Set pc.Recordset = rs
rs.Close
pt.RefreshTable
End Sub
Avatar billede stc Nybegynder
26. januar 2005 - 20:52 #3
Tak for forslagene, men jeg er desværre ingen VBA haj og kan ikke rigtig få det til at virke. Skal der først installeres en driver eller lign. for at kunne få fat på en XML datasource eller ??
Avatar billede stc Nybegynder
26. januar 2005 - 21:40 #4
Jeg får problemer allerede i linie 4 (Dim rst As ADODB.Recordset). Hvad er det der sker her. Det ser for mig ud til at være forbindelsen til data jeg ikke får til at virke, men jeg ved ikke hvorfor!!! Håber nogen kan hjælpe.
Avatar billede bak Seniormester
26. januar 2005 - 22:27 #5
rolig nu... Jeg glemte at skrive at i makroeditoren skal du under Tools/References sætte flueben ved Microsof ActiveX Data Object 2.x Library.
Så kan du få forbindelsen til at virke :-)
Avatar billede bak Seniormester
26. januar 2005 - 22:35 #6
Hvis du er interesseret i et eksempel så læg i en email-adresse
Avatar billede bak Seniormester
26. januar 2005 - 23:06 #7
Hent eksempel her:
Pakkes ud så filerne er i samme bibliotek.

www.tbdl.dk/excel/Report.zip
Avatar billede stc Nybegynder
27. januar 2005 - 10:29 #8
Hej bak

Tusind tak for dit eksempel som jeg har fået til at fungere helt fint. Nu bare en sidste lille hale. Hvis jeg går ind i en af mine Access tabeller og eksporterer dem til "C:\Report.xml" virker det ikke rigtig, men jeg får en fejlmeddelse "Recordset cannot be created. Source XML is incomplete or invalid". Er der nogle krav til XML filen som jeg ikke opfylder. Længere nede i koden kan jeg se at du refererer til nogle konkrete variable i dine data. Det er selvfølgelig noget jeg skal have rettet så det passer til mine variable, men det er vel ikke det der er problemet her??
Avatar billede stc Nybegynder
28. januar 2005 - 14:51 #9
Hej bak
Nu kører det bare. Mange tak for det arbejde du har lagt i det. Det har været en super hjælp for mig. Jeg kan ikke rigtig komme til at tildele dig point, selvom jeg gerne ville. Hvis du ændrer dine kommentarer til et "svar" er der point.
Tak igen.
Avatar billede bak Seniormester
28. januar 2005 - 16:37 #10
Hvordan har du fået det til at virke.
Jeg synes at jeg har lidt problemer med export til xlm fra access2000
Avatar billede stc Nybegynder
29. januar 2005 - 18:08 #11
Jeg kan heller ikke få det til at virke med XML fra Access. Jeg brugte dog kun Access til test. Det jeg egentlig skulle bruge det til var mod en Oracle database og her virker det lige efter hensigten.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester