Discussione:
Creare una macro per compilare un modulo
(troppo vecchio per rispondere)
Flavio
2009-03-12 08:14:13 UTC
Permalink
Buongiorno,

avrei necessità di creare una macro per realizzare quanto segue:

ho un modulo in excel da compilare con dati di alcune aziende. (es. ragione
sociale, via, p.iva, ecc...)
in un secondo foglio di excel ho le aziende con tutti i dati divisi per
colonna.
Come faccio a ottenre un file excel compilato con i dati di ciascun azienda?
(Dovrebbe essere un file excel per ogni azienda).

Grazie

Flavio
Mauro Gamberini
2009-03-12 11:42:13 UTC
Permalink
Post by Flavio
ho un modulo in excel da compilare con dati di alcune aziende. (es. ragione
sociale, via, p.iva, ecc...)
in un secondo foglio di excel ho le aziende con tutti i dati divisi per
colonna.
Come faccio a ottenre un file excel compilato con i dati di ciascun azienda?
(Dovrebbe essere un file excel per ogni azienda).
Cosa intendi per *modulo in excel* ?
E' un foglio che avrà, immagino, una struttura;
quale?

Il *secondo foglio* si trova nella stessa cartella
(cartella e foglio intesi in ambiente Excel)?
Puoi postare, per favore, la struttura della tabella
di questo secondo foglio da dove recuperare i dati?

Grazie.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
Flavio
2009-03-12 14:25:01 UTC
Permalink
Io ho un banale foglio excel("modulo") con alcune celle dove dovrei inserire
i dati societari.
Nella stessa cartella di lavoro, ho un altro foglio dove sono presenti i
dati di ogni azienda da inserire in questi campi.
Questo foglio è composto:
Colonna A: Ragione Sociale
Colonna B: P.IVA
Colonna C: CFiscale
Colonna D: Via
Colonna E: Comune
Il risultato è ottenere una cartella di lavoro(file) per ogni azienda
presente, compilato con tutti i suoi dati.
Pensi sia fattibile?

Grazie
Flavio
Post by Mauro Gamberini
Post by Flavio
ho un modulo in excel da compilare con dati di alcune aziende. (es. ragione
sociale, via, p.iva, ecc...)
in un secondo foglio di excel ho le aziende con tutti i dati divisi per
colonna.
Come faccio a ottenre un file excel compilato con i dati di ciascun azienda?
(Dovrebbe essere un file excel per ogni azienda).
Cosa intendi per *modulo in excel* ?
E' un foglio che avrà, immagino, una struttura;
quale?
Il *secondo foglio* si trova nella stessa cartella
(cartella e foglio intesi in ambiente Excel)?
Puoi postare, per favore, la struttura della tabella
di questo secondo foglio da dove recuperare i dati?
Grazie.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
Mauro Gamberini
2009-03-12 15:27:29 UTC
Permalink
Post by Flavio
Io ho un banale foglio excel("modulo") con alcune celle dove dovrei inserire
i dati societari.
Nella stessa cartella di lavoro, ho un altro foglio dove sono presenti i
dati di ogni azienda da inserire in questi campi.
Colonna A: Ragione Sociale
Colonna B: P.IVA
Colonna C: CFiscale
Colonna D: Via
Colonna E: Comune
Il risultato è ottenere una cartella di lavoro(file) per ogni azienda
presente, compilato con tutti i suoi dati.
Pensi sia fattibile?
Se(se) la Ragione Sociale è univoca non hai
bisogno di nessuna macro.

Evidenzia le celle della colonna che contiene le
Ragioni Sociali. Dai un nome alle celle selezionate
(Inserisci-->Nome-->Definisci) es.: RagioneSociale.
Fai la stessa cosa per tutta la tabella e chiamala,
ad esempio, DatiAziende.

Adesso vai nel foglio Modulo.
Vai nella cella dove vuoi inserire la
Ragione Sociale.
Dati-->Convalida
In consenti seleziona: Elenco
In origine scrivi: =RagioneSociale
(mi raccomando l'uguale).

Adesso vai nelle varie celle del modulo dove vuoi
inserire i successivi dati anagrafici e utilizza
CERCA.VERT.
Ad esempio, nella cella dove vuoi la PIva scrivi:

=SE(VAL.ERRORE(CERCA.VERT(xxx;DatAziende;2;FALSO));"";CERCA.VERTxxx;DatiAziende;2;FALSO))

(questo se la PIva è la seconda colonna della tua tabella
DatiAziende) sostituendo a xxx il riferimento
alla cella che contiene la Ragione Sociale.

Un unico avvertimento. Se vuoi/devi aggiungere
in seguito nuove aziende alla tabella,
inserisci una riga fra quelle già esistenti
per non dover modificare a mano i
riferimenti del nome DatiAziende.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
Flavio
2009-03-12 16:03:02 UTC
Permalink
Ok, fino a qui mi torna. Come faccio ora a salvare automaticamente un file
per ogni azienda? Ho più di 700 aziende e non volevo farle una per uno.

Grazie
Post by Mauro Gamberini
Post by Flavio
Io ho un banale foglio excel("modulo") con alcune celle dove dovrei inserire
i dati societari.
Nella stessa cartella di lavoro, ho un altro foglio dove sono presenti i
dati di ogni azienda da inserire in questi campi.
Colonna A: Ragione Sociale
Colonna B: P.IVA
Colonna C: CFiscale
Colonna D: Via
Colonna E: Comune
Il risultato è ottenere una cartella di lavoro(file) per ogni azienda
presente, compilato con tutti i suoi dati.
Pensi sia fattibile?
Se(se) la Ragione Sociale è univoca non hai
bisogno di nessuna macro.
Evidenzia le celle della colonna che contiene le
Ragioni Sociali. Dai un nome alle celle selezionate
(Inserisci-->Nome-->Definisci) es.: RagioneSociale.
Fai la stessa cosa per tutta la tabella e chiamala,
ad esempio, DatiAziende.
Adesso vai nel foglio Modulo.
Vai nella cella dove vuoi inserire la
Ragione Sociale.
Dati-->Convalida
In consenti seleziona: Elenco
In origine scrivi: =RagioneSociale
(mi raccomando l'uguale).
Adesso vai nelle varie celle del modulo dove vuoi
inserire i successivi dati anagrafici e utilizza
CERCA.VERT.
=SE(VAL.ERRORE(CERCA.VERT(xxx;DatAziende;2;FALSO));"";CERCA.VERTxxx;DatiAziende;2;FALSO))
(questo se la PIva è la seconda colonna della tua tabella
DatiAziende) sostituendo a xxx il riferimento
alla cella che contiene la Ragione Sociale.
Un unico avvertimento. Se vuoi/devi aggiungere
in seguito nuove aziende alla tabella,
inserisci una riga fra quelle già esistenti
per non dover modificare a mano i
riferimenti del nome DatiAziende.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
Mauro Gamberini
2009-03-12 16:43:35 UTC
Permalink
Post by Flavio
Ok, fino a qui mi torna. Come faccio ora a salvare automaticamente un file
per ogni azienda? Ho più di 700 aziende e non volevo farle una per uno.
Quindi un file per ciscuna azienda?
Cambiamo...

Crea un file e chiamalo Modulo.xls.
Deve avere un unico foglio, chiamato Modulo.

Nel Foglio con i dati (qui Dati.xls)
con il foglio con i dati chiamato: Dati.
Inserisci questo codice
in un modulo standard:


Public Sub m()

Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lUltRiga As Long
Dim lng As Long

Set wk1 = ThisWorkbook
Set wk2 = Workbooks("Modulo.xls")

With wk1
Set sh1 = Worksheets("Dati")
End With

With wk2
Set sh2 = .Worksheets("Modulo")
End With

With sh1
lUltRiga = .Range("A" & _
.Rows.Count).End(xlUp).Row
For lng = 2 To lUltRiga
sh2.Range("A1").Value = _
.Range("A" & lng).Value
sh2.Range("B3").Value = _
.Range("B" & lng).Value
sh2.Range("C5").Value = _
.Range("C" & lng).Value
wk2.SaveAs Filename:="C:\tuaCartella\" & _
.Range("A" & lng).Value
Set wk2 = Workbooks(wk2.Name)
Set sh2 = wk2.Worksheets("Modulo")
Next

End With

wk2.Close
Set sh2 = Nothing
Set sh1 = Nothing
Set wk2 = Nothing
Set wk1 = Nothing

End Sub

La parte importante è questa:

sh2.Range("A1").Value = _
.Range("A" & lng).Value
sh2.Range("B3").Value = _
.Range("B" & lng).Value
sh2.Range("C5").Value = _
.Range("C" & lng).Value
wk2.SaveAs Filename:="C:\tuaCartella\" & _
.Range("A" & lng).Value

dove la parte a sx dell'uguale è la cella del foglio
Modulo in cui andrò ad incollare il dato, la parte a dx
dell'uguale e la cella da cui andrò a copiare il dato.
Qui figuro di prelevare dalle colonne A,B,C di ciascuna
riga del foglio Dati e incollare in celle diverse nel
foglio Modulo. Sarà tua cura completare e modificare
i riferimenti.
Ogni file verrà salvato nella cartella: C:\tuaCartella
con il nome di ciò che troverò nella colonna Ragione Sociale.

Prova e poi, per favore, riferisci eventuali problemi.
Grazie.
--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://blog.maurogsc.eu/
Continua a leggere su narkive:
Loading...