Conversione XML



  • Conversione XML
    di Fabio2013 (utente non iscritto) data: 31/08/2013 05:37:49

    Vorrei creare un comando VBA che mi converta un file XML in txt.
    Se riuscite a darmi qualche indicazione, vi ringrazio
    Fabio



  • di stefanmi data: 31/08/2013 08:44:40

    ma una cosa tipo il mio allegato?



  • di Vecchio Frac data: 31/08/2013 12:18:04

    cit. "un comando VBA che mi converta un file XML in txt."
    ---> i file XML sono già di tipo testo. Come i CSV del resto. Sono un formato standard di memorizzazione dei dati.
    Qual è la richiesta vera? :)




  • Conversione XML
    di fabio (utente non iscritto) data: 31/08/2013 12:45:42

    ciao vecchio Frac
    so che xml è un file di testo, ma io lo devo trasformare in ascii per importarlo sul gestionale
    sono ordini che possono essere di più righe, recod che assumono come chiave il codice cliente e il numero d'ordine.
    Il file è tipo quello strutturato da stefanmi
    Grazie per l'aiuto



  • di Vecchio Frac data: 31/08/2013 13:34:13

    Guarda, non so se può servirti ma io ho fatto così (e se funziona su Excel 2003 immagino vada bene anche per versioni successive).
    Ho avviato Excel.
    Ho aperto il tuo file zippato.
    Ho trascinato il contenuto del tuo file (ordini.xml) direttamente dentro il foglio vuoto di Excel.
    Si è avviato un wizard che ho confermato semplicemente con ok (Excel legge la struttura dati XML e genera la tabella corrispondente, con i campi al posto giusto).
    A quel punto puoi esportare in formato csv.
    Tutto fatto :)
    Se ti serve un altro formato puoi scrivere due righe di codice ed esportare riga per riga su un file di testo.





  • di HarryBosch data: 31/08/2013 14:24:26

    Quoto assolutamente VecchioFrac :)
    In fin dei conti il formato .XML è uno di quelli previsti dall'apertura dell'applicazione:
    "Tutti i file di Excel(*xl, *xlsx, ecc...)"

    Dovresti riuscire ad adattare facilmente la sub qua sotto, con la conversione nel formato che ti serve.
    Per verificare le voci dei vari formati, puoi sempre registrare una macro di prova e verificarne il risultato.
     
    Sub converti_XML()
    Dim percorso As String
    
    'percorso del file (sarà anche quello di destinazione):
    percorso = "C:UsersuserDesktop"
      
      With Application
        .ScreenUpdating = False
        
        .DisplayAlerts = False
        Workbooks.OpenXML percorso & "Ordini.xml", LoadOption:=xlXmlLoadImportToList
        .DisplayAlerts = True
    
        With ActiveWorkbook
          .SaveAs percorso & "Ordini_convertito.txt", FileFormat:=xlText
          .Close False
        End With
    
        .ScreenUpdating = True
      End With
    End Sub


  • Conversione XML
    di Fabio (utente non iscritto) data: 31/08/2013 18:26:28

    Ragazzi ammetto che sono alle prime armi con VBA, anche se uso parecchie macro semplici, ma al momento non ho risolto il problema, ho provato sia ad importare e salvare in txt, che a scrivere il codice della macro senza successo, mi dà errore di sintassi.
    Grazie per l'aiuto
     
    Sub converti_XML()
    '
    ' converti_XML Macro
    ' Macro registrata il 31/08/2013 da info@panasci.it
    '
    
    Dim "C:Ordini.xml" As String
    
    'percorso del file (sarà anche quello di destinazione):
    percorso = "C:"
      
      With Application
        .ScreenUpdating = False
        
        .DisplayAlerts = False
        Workbooks.OpenXML "C:Ordini.xml", LoadOption:=xlXmlLoadImportToList
        .DisplayAlerts = True
    
        With ActiveWorkbook
          .SaveAs "C:Ordini_convertito.txt", FileFormat:=xlText
          .Close False
        End With
    
        .ScreenUpdating = True
      End With
    End Sub
    



  • di HarryBosch data: 01/09/2013 19:40:37

    Ok, ti perdono perché sei alle prime armi ^_^
    Scherzi a parte, l'errore di sintassi è "grossolano", e si trova già nella prima istruzione quando dichiari la variabile che in principio era "percorso". Ti consiglio subito un'infarinatura su queste:
    h t t p://excelvba.altervista.org/Corso/Sintassi.html

    La dichiarazione deve rimanere com'era: Dim percorso As String
    e l'unica cosa da modificare è dove ti avevo inserito il commento, in quanto dopo l'uguaglianza andava scritto il percorso del tuo PC dove si trova il file Ordini.xml:
    percorso = "C:UsersuserDesktop"

    Il nome che viene assegnato al file di testo, sarà: Ordini_convertito (da modificare a piacere).

    Prova ora: il file Ordini.xml dovrà trovarsi all'interno della cartella C:
     
    Sub converti_XML()
    Dim percorso As String
    
    'percorso del file (sarà anche quello di destinazione):
    percorso = "C:"
      
      With Application
        .ScreenUpdating = False
        
        .DisplayAlerts = False
        Workbooks.OpenXML percorso & "Ordini.xml", LoadOption:=xlXmlLoadImportToList
        .DisplayAlerts = True
    
        With ActiveWorkbook
          .SaveAs percorso & "Ordini_convertito.txt", FileFormat:=xlText
          .Close False
        End With
    
        .ScreenUpdating = True
      End With
    End Sub



  • di Fabio (utente non iscritto) data: 01/09/2013 20:11:29

    HarryBosch
    grazie della tua pazienza, vedrò anche di infarinarmi a dovere, ho scritto il codice come mi hai indicato, il file si trova in C
    Mi dà: "Errore di compilazione - Impossibile trovare il metodo o il membro dei dati"
    Con il tuo aiuto ce la posso fare
    grazie Fabio
     
    Sub converti_XML()
    Dim percorso As String
    
    'percorso del file (sarà anche quello di destinazione):
    percorso = "C:"
      
      With Application
        .ScreenUpdating = False
        
        .DisplayAlerts = False
        Workbooks.OpenXML percorso & "Ordini.xml", LoadOption:=xlXmlLoadImportToList
        .DisplayAlerts = True
                
        With ActiveWorkbook
          .SaveAs percorso & "Ordini_convertito.txt", FileFormat:=xlText
          .Close False
        End With
    
        .ScreenUpdating = True
      End With
    End Sub



  • di HarryBosch data: 02/09/2013 00:20:07

    Beh, la cartella C: potrebbe comportare problemi di autorizzazione, ma non è questo l'errore che ti esce. Eventualmente prova a spostare il file Ordini su un percorso diverso (ad esempio sul desktop) e vedere cosa succede.

    Su quale riga del codice esce l'errore?



  • di Fabio (utente non iscritto) data: 02/09/2013 21:55:38

    Ciao
    ho spostato il file e scritto il nuovo percorso, la macro si blocca mi evidenzia
    Sub converti-XML() in giallo

    OpenXML in blu

    probabilmente sbaglio qualcosa
     
    Sub converti_XML()
    Dim percorso As String
    
    'percorso del file (sarà anche quello di destinazione):
    percorso = "C:ARCHIVIOXML"
      
      With Application
        .ScreenUpdating = False
        
        .DisplayAlerts = False
        Workbooks.OpenXML percorso & "Ordini.xml", LoadOption:=xlXmlLoadImportToList
        .DisplayAlerts = True
                
        With ActiveWorkbook
          .SaveAs percorso & "Ordini_convertito.txt", FileFormat:=xlText
          .Close False
        End With
    
        .ScreenUpdating = True
      End With
    End Sub
    



  • di Vecchio Frac data: 03/09/2013 10:12:00

    Questa sarà una risposta fastidiosa ma è meglio esserne sicuri :)
    - il percorso "C:ARCHIVIOXML" è stato creato ed esiste sul pc?
    - il file "ordini.xml" all'interno di "percorso" (che deve essere "C:ARCHIVIOXML") esiste?





  • di fabio (utente non iscritto) data: 03/09/2013 12:58:09

    Ciao
    La cartella esiste e il file è al suo interno
    Grazie per l'attenzione



  • di Vecchio Frac data: 03/09/2013 15:22:52

    Ma è molto strano tutto ciò.
    Il codice sembra funzionare a dovere.
    Allegheresti un esempio di file da leggere e il file col tuo codice problematico?





  • di HarryBosch data: 03/09/2013 17:09:14

    Si, veramente strano. Non riesco nemmeno a simulare l'errore:
    "Errore di compilazione - Impossibile trovare il metodo o il membro dei dati"
    ^_^

    C'è qualcosa che sfugge...



  • di fabio (utente non iscritto) data: 03/09/2013 21:26:33

    Ho allegato il file, grazie



  • di HarryBosch data: 03/09/2013 23:48:44

    Servirebbe anche il file Excel, con la relativa macro che hai provato :)

    Anzi, facciamo una prova di questo tipo, perché sono proprio curioso: scarica il .rar che allego, lasciando i due file all'interno. Apri il file Excel e lancia la macro.
    Dimmi se ti esce ancora qualche errore oppure se il file di testo viene generato correttamente (sempre all'interno della stessa cartella).



  • di Fabio (utente non iscritto) data: 04/09/2013 04:54:35

    Ho aggiunto la cartella XML - a me dà lo stesso errore , il mio excel è il 2000, non è che mi manca qualche configurazione, altre macro le eseguo regolarmente.
    grazie, ciao



  • di Vecchio Frac data: 04/09/2013 10:25:52

    Excel 2000? ma nel primo post hai specificato "Excel 2007"!
    Molto probabilmente (se posso mi documento) l'insieme Workbooks non esponeva ancora, all'epoca, la proprietà OpenXML e per questo ti dà errore qui:
    Workbooks.OpenXML
    come tu stesso hai dichiarato.





  • di Vecchio Frac data: 04/09/2013 10:40:44

    Al 99% è così come ho ipotizzato.
    Per assicurarcene:
    - avvia un Excel 2000 vuoto
    - apri l'editor di codice (Alt-F11)
    - premi F2 (visualizzatore oggetti)
    - cerca nel riquadro di sinistra (le classi) l'insieme Workbooks e selezionalo
    - nel riquadro di destra (membri di classe) trovi le proprietà della classe selezionata.
    Se nell'elenco non trovi OpenXML (che c'è nella mia versione Excel 2003) allora vuol dire che questo metodo non è disponibile.





  • di HarryBosch data: 04/09/2013 17:13:22

    Grazie VecchioFrac.
    E così l'arcano mistero è risolto... ecco perché non riuscivo e riottenere l'errore con nessuna versione (2003 e successive).
    Spesso chiediamo appunto di indicare la versione in uso, ma se viene messa e poi non risulta quella utilizzata... ahimé, si rischia di perdere un sacco di tempo, per entrambe le parti ovviamente.

    Avvia il registratore di macro:
    - apri il file xml in Excel e lo salvi in txt
    poi posta il codice, così vediamo di sistemarlo.



  • di Fabio (utente non iscritto) data: 04/09/2013 20:25:49

    HarryBosch e Vecchio Frac
    Grazie è tutto ok - ho provato su un pc dove è installato excel 2010 funziona tutto alla grande - scusate se vi ho fatto lavorare un po', ma non ci sarei arrivato perche' avevo preso un'altra strada.
    Grazie ancora



  • di Fabio (utente non iscritto) data: 05/09/2013 09:00:27

    Il problema è risolto utilizzando una versione recente, ma sul PC che dovrebbe fare questa operazione è installato la versione 2000, secondo voi è possibile con qualche intervento riuscire a utilizzare Excel 2000
    E' l'utima informazione, grazie