Avevo un programma che mi generava file funzionali in xml.
Attualmente ho alcuni file generati dal vecchio programma.
Usando uno di essi ho ottenuto il file XSD
- Codice: Seleziona tutto
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="dataroot">
<xs:complexType>
<xs:sequence>
<xs:element name="evento">
<xs:complexType>
<xs:sequence>
<xs:element name="partecipante" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="professione">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="disciplina"/>
</xs:sequence>
<xs:attribute type="xs:byte" name="cod_prof" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="cod_fisc" use="optional"/>
<xs:attribute type="xs:string" name="nome" use="optional"/>
<xs:attribute type="xs:string" name="cognome" use="optional"/>
<xs:attribute type="xs:string" name="ruolo" use="optional"/>
<xs:attribute type="xs:string" name="lib_dip" use="optional"/>
<xs:attribute type="xs:byte" name="part_reclutato" use="optional"/>
<xs:attribute type="xs:float" name="cred_acq" use="optional"/>
<xs:attribute type="xs:date" name="data_acq" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="cod_org"/>
<xs:attribute type="xs:byte" name="cod_obi"/>
<xs:attribute type="xs:date" name="data_ini"/>
<xs:attribute type="xs:short" name="num_part"/>
<xs:attribute type="xs:byte" name="cod_tipologia_form"/>
<xs:attribute type="xs:byte" name="ore"/>
<xs:attribute type="xs:byte" name="cod_edi"/>
<xs:attribute type="xs:byte" name="tipo_form"/>
<xs:attribute type="xs:string" name="tipo_eve"/>
<xs:attribute type="xs:float" name="crediti"/>
<xs:attribute type="xs:date" name="data_fine"/>
<xs:attribute type="xs:short" name="cod_evento"/>
<xs:attribute type="xs:byte" name="cod_accr"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
E ho un file csv con i dati che devo usare
Esempio csv
- Codice: Seleziona tutto
cod_org;cod_obi;data_ini;num_part;cod_tipologia_form;ore;cod_edi;tipo_form;tipo_eve;crediti;data_fine;cod_evento;cod_accr;cod_fisc;nome;cognome;ruolo;lib_dip;part_reclutato;cred_acq;data_acq;cod_prof;disciplina
PG20120132780;6;01/10/2019;368;13;6;3;1;E;6;31/12/2019;2703;80;CLNGLC60B20A944W;GIAN LUCA;CALANCHI;P;D;0;6;31/12/2019;1;9
PG20120132780;6;01/10/2019;368;13;6;3;1;E;6;31/12/2019;2703;80;CNTMLN76M52H294M;MARIA ELENA;CANTARINI;P;D;0;6;31/12/2019;1;24
PG20120132780;6;01/10/2019;368;13;6;3;1;E;6;31/12/2019;2703;80;BRLMRT66E42G768R;MARTA;BORELLINI;P;D;0;6;31/12/2019;12;82
PG20120132780;6;01/10/2019;368;13;6;3;1;E;6;31/12/2019;2703;80;BGNFPP96A26F257W;FILIPPO;BAGNOLI;P;L;0;6;31/12/2019;14;85
Ipotesi uno trovare una soluzione che mi faccia convertire il file partendo da queste due fonti.
Ipotesi due usare Excel e generare il file.
Ho realizzato un file con 3 fogli, il primo con i dati dei partecipanti, il secondo con i dati dell’evento il terzo con il pulsante e le formule.
Ho recuperato due script ma ho alcuni problemi.
- Codice: Seleziona tutto
Sub PARTENZA()
Sheets("XML").Select
Range("A1:A4").Select
Application.DisplayAlerts = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWorkbook.SaveAs Filename:="d:\prova.txt", FileFormat:=xlText, CreateBackup:=False
Call PARTI
End Sub
Sub PARTI()
Dim Iniz As String, myCol As Long, I As Long
Iniz = "A5" '<<** La cella col primo nome da esaminare
myCol = Range(Iniz).Column
For I = Range(Iniz).Row To Range(Iniz).Offset(5000, 0).End(xlUp).Row
[A1] = Cells(I, myCol).Value
[B1] = Cells(I, myCol + 1).Value
[C1] = Cells(I, myCol + 2).Value
[D1] = Cells(I, myCol + 3).Value
[E1] = Cells(I, myCol + 4).Value
[F1] = Cells(I, myCol + 5).Value
[G1] = Cells(I, myCol + 6).Value
[H1] = Cells(I, myCol + 7).Value
[I1] = Cells(I, myCol + 8).Value
[J1] = Cells(I, myCol + 9).Value
‘Call ATAK
Next I
End Sub
Il primo script PARTIRE copia su un file di testo la prima parte del file generato con una formula di unione in un file di testo poi passa il gioco al secondo PARTI che salta una riga e passa il campo ad una 3 ATAK che non ho ancora trovato che dovrebbe “attaccare (aggiungere)” la riga posta nel foglio BASE in A20 e ritornare a PARTI che se esistono nuove righe ripete il loop su ATAK.
Se non vi sono nuove righe occorre saltare ad una quarta FINE che attacca la riga BASE A22 e salva il file.
Il file dopo deve essere codificato come utf8.
il file excell è questo https://docs.google.com/spreadsheets/d/ ... ue&sd=true