Newsgroup: it.comp.aiuto
Titolo: Macro di Excel..Aiuto....

Non sò se sono OT...ma non sono riuscito a trovare un NG x Excel....
conosco poco Excel e vorrei un aiuto x creare una macro....
il mio problema è questo...in ufficio mi arriva ogni 2/3 mesi un DB
chiamiamolo così, in formato testo e tutti i caratteri sono scritti
attaccati (non mi spiego il perchè arrivino così)...Esempio:
1237347487843988DRFNBHHJ7676HHHJ996YFD788399893898499558494899884646
essi hanno un significato ...nel senso che i primi tre numeri sono un codice
regionale, i secondi tre numeri sono un codice aziendale... poi vi è un
codice fiscale e via procedendo...
ogni volta che arriva stò file devo procedere manualmente con Excel ad
importarlo e selezionare i campi... mi risulta che è possibile creare una
macro che faccia questo x me....le spaziature dei campi risultano essere....
3-3-5-1-6-16-Cognome-Nome-1-Datanascita-5-3-16-2-7-1-8-1-1-1-5-1-3-1-----
Grazie tantissimo a chi potrà darmi una mano... (a lavorare di meno) !!!

 3-3-5-1-6-16-Cognome-Nome-1-Datanascita-5-3-16-2-7-1-8-1-1-1-5-1-3-1-----
Nome, cognome e data di nascita hanno lunghezza fissa
(nome e cognome 3 caratteri, data 6) o variabile?
Nel primo caso con excel97-2000 la macro
potrebbe essere:
'inizio codice
Sub Prova()
intervallo = Selection
variabile = Split("3-3-5-1-6-16-3-3-1-6-5-3-16-2-7-1-8-1-1-1-5-1-3-1", "-")
inizio = 1
For i = 0 To UBound(variabile)
    Cells(Selection.Row, Selection.Column + i + 1) = _
        Mid(intervallo, inizio, variabile(i))
    inizio = inizio + variabile(i)
Next i
End Sub
'fine codice
per farla funzionare sposta il cursore sulla cella da elaborare,
premi alt+f8 e scegli prova
Vb.sw
=================================
Vuoi imparare a scrivere più velocemente?
Allora vai su 
http://digilander.iol.it/quickeyboard
e scarica QuicKeyboard 2001, è Freeware
ICQ: 83848698
=================================

 ha scritto nel messaggio
news:8s6guk$jkq9c$3...@ID-46473.news.cis.dfn.de...

----------------
Grazie VB x avermi scritto la macro...però dato che sono a digiuno di
Excel...dovresti dirmi il procedimento di dove scriverla ed il modo x
applicarla... nel senso che faccio.... la devo scrivere prima (oppure copio
la tua) o dopo che ho importato il file di testo ???
Insomma ti chiedo un pò di pazienza sul come procedere...
Inoltre ti dico che... chiaramente Cognome e nome hanno lunghezza
variabile....perchè uno si può chiamare Rossi Pio ed un'altro Cavallerizzo
Gian Luca Antonio... la data di nascita sono 8 caratteri....tipo 12101999..
però considera
che quando lo faccio in Excel manualmente mi toglie lo Zero davanti la prima
cifra.....per cui 05102000 diventa 5102000....se conosci anche un modo x far
rimanere lo Zero è meglio !!!!
Ti ringrazio un milione di volte...se riesco a far funzionare la macro mi
risparmi un sacco di lavoro... Ciao !!!!!

 rimanere lo Zero č meglio !!!!
Dovresti postare un esempio concreto dei dati che devi elaborare
(bastano un paio di righe), ovviamente puoi modificarli mettendo
dei nominativi fittizi.
Vb.sw
=================================
Vuoi imparare a scrivere piů velocemente?
Allora vai su 
http://digilander.iol.it/quickeyboard
e scarica QuicKeyboard 2001, č Freeware
ICQ: 83848698
=================================

 dei nominativi fittizi.
-------------
non ci sono problemi...ho fatto un copia-incolla... questo è l'esempio
concreto e reale.. vedi che x motivi di spazio non entra tutto in una riga
...ma l'inizio è sempre 120....
 120111081560141308           CMZMRA35S51D843SCOMIZIO
MARIA
21111193506110210515010500123631420121062000N86.30.3001100000000002480011505
2
120111081560141308           CMZMRA35S51D843SCOMIZIO
MARIA               21111193506110210515010500123631429921062000N
0001000000000024800115052
1201110815601305474          HFRMMG47P41Z111LHOFER
MARIA MAGDALENA
20109194705900811112099991743971380117062000N87.17.1001200000000004300011206
9
1201110815601305474          HFRMMG47P41Z111LHOFER
MARIA MAGDALENA     20109194705900811112099991743971389917062000N
0002004300000000000112069
1201110815601300616          MSSGDU47P24D662KMASSARELLA
GUIDO               12409194705900711112099992435044370128062000N87.22
0012000000000035000112069
1201110815601300616          MSSGDU47P24D662KMASSARELLA
GUIDO               12409194705900711112099992435044379928062000N
0002003500000000000112069
1201110815601400408          RGGTGV24S41C998ERUGGIERO
ITALIA GIOVANNA     20111192406003011212099994005204170105062000N89.7
0011000000000026400112038
1201110815601400408          RGGTGV24S41C998ERUGGIERO
ITALIA GIOVANNA     20111192406003011212099994005204179905062000N
0001000000000026400112038

 0001000000000026400112038
Nel primo post dicevi che i dati arrivano con i caratteri tutti attaccati e
che le spaziature dei campi erano
3-3-5-1-6-16-Cognome-Nome-1-Datanascita-5-3-16-2-7-1-8-1-1-1-5-1-3-1-----
mentre la lista che hai postato sembra abbastanza diversa da come l'avevi
destritta.
La macro che ho scritto si basa sulla spaziatura che hai indicato nel primo
post.
Con excel97/2000, apri soltanto il file che devi elaborare (meglio se č una
copia) e premi alt+f11.
Dal menu inserisci, scegli modulo ed incolla il codice in coda al msg.
Ritorna in excel, spostati sulla prima cella, premi alt+f8, fai clic su
'Prova' e premi 'esegui'.
Con questo esempio funziona
120111081560141308WWWSSS35S51D843SGIUSEPPE
VERDI21010191006110210515010500123631429921062000N0001000000000024800
'Inizio codice
Sub Prova()
Dim Intervallo, PartePrima
Dim ParteSeconda, Inizio, i
Dim Intervallo2, NomeCognome
Intervallo = Selection
Intervallo2 = Right(Intervallo, 64)
PartePrima = Split("3-3-5-1-6-16", "-") '34
ParteSeconda = Split("1-8-5-3-16-2-7-1-8-1-1-1-5-1-3-1", "-") '64
NomeCognome = Right(Intervallo, Len(Intervallo) - 34)
NomeCognome = Left(NomeCognome, Len(NomeCognome) - 64)
Inizio = 1
For i = 0 To UBound(PartePrima)
    Cells(Selection.Row, Selection.Column + i _
        + 1).NumberFormat = "@"
    Cells(Selection.Row, Selection.Column _
        + i + 1) = Mid(Intervallo, Inizio, PartePrima(i))
    Inizio = Inizio + PartePrima(i)
Next i
Cells(Selection.Row, Selection.Column + i + 1) = NomeCognome
Inizio = 1
For i = 0 To UBound(ParteSeconda)
    Cells(Selection.Row, Selection.Column + i _
        + 8).NumberFormat = "@"
    Cells(Selection.Row, Selection.Column + i + _
        8) = Mid(Intervallo2, Inizio, ParteSeconda(i))
    Inizio = Inizio + ParteSeconda(i)
Next i
End Sub
'Fine codice


 ha scritto nel messaggio
news:8sei6e$k1q8r$2...@ID-46473.news.cis.dfn.de...

-----------------
ho provato a fare passo-passo quello che mi hai detto ma arrivati a "Prova"
mi da un messaggio di errore che dice " Errore  Run-time '5' Chiamata di
routine o argomento non validi"
provo a fare "Debug" e in codice l'evidenziazione gialla si posiziona su
NomeCognome etc... !!!
che puň essere...forse la stringa deve essere tutta attaccata..???