Condividi:        

Macro Excel - Copia base dati su celle contigue

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro Excel - Copia base dati su celle contigue

Postdi Franciscu » 07/11/13 13:17

Buon giorno a tutti,
mi servirebbe un aiuto.

Ho un file excel master sul quale dovrei incollare di seguito le basi dati presenti su altri 3 file.

Ogni volta che lancio la query sul file master,
la stessa dovrebbe cancellarmi la base dati già presente ( tranne la prima riga che contiene intestazioni per pivot e deve rimanere sempre uguale ), e incollarmi nuovamente le altre basi dati presenti sugli altri 3 file.

Sinteticamente, incollata la prima base dati del primo file a partire dalla cella a2,
mi dovrebbe incollare la seconda base dati di seguito sulla prima cella a vuota e così via.

Grazie anticipatamente
Franciscu
Newbie
 
Post: 2
Iscritto il: 07/11/13 12:44

Sponsor
 

Re: Macro Excel - Copia base dati su celle contigue

Postdi Anthony47 » 07/11/13 14:14

Ciao Franciscu, benvenuto nel forum.
Con questo livello di dettaglio e' difficile suggerire qualcosa di preciso.
In prima battuta ti direi di registrarti una macro mentre esegui manualmente le operazioni che hai citato, poi se in quel modo non risolvi completamente si potra' vedere come rendere la macro piu' aderente alla tua situazione.

Ciao, fai sapere dove arrivi.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Excel - Copia base dati su celle contigue

Postdi Franciscu » 07/11/13 15:38

Ciao,
di seguito la macro.

Ho colorato in rosso la parte che dovrei modificare.
In pratica, per incollare nella cella 557 ho dovuto prima selezionarla.
Mi servirebbe invece una funzione che me la incolla direttamente in quella cella
piuttosto che in un'altra dipende tutto dalla lunghezza delle basi dati che vado
ad incollare ovviamente, se questa viene riconosciuta come la prima cella vuota della colonna A.

Grazie ancora.



Sub Macro5()
'
' Macro5 Macro
'
' Scelta rapida da tastiera: CTRL+MAIUSC+T
'

StartRange = "A2:I2"
EndRange = "I2"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a, b).Select
Selection.ClearContents

ChDir "C:\Documents and Settings\luigi.orsini\Desktop"
Workbooks.Open Filename:= _
"C:\Documents and Settings\luigi.orsini\Desktop\EventiBO.csv"
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True
StartRange = "A2:I2"
EndRange = "I2"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a, b).Select
Selection.Copy
Windows("Macro Conteggio.xlsm").Activate
ActiveSheet.Paste
Range("E18").Select
Workbooks.Open Filename:= _
"C:\Documents and Settings\luigi.orsini\Desktop\PreFtts.csv"
Columns("A:A").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True
StartRange = "A2:I2"
EndRange = "I2"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a, b).Select
Selection.Copy
Windows("EventiBO.csv").Activate
Windows("Macro Conteggio.xlsm").Activate
ActiveWindow.ScrollRow = 93
ActiveWindow.ScrollRow = 782
ActiveWindow.ScrollRow = 690
ActiveWindow.ScrollRow = 644
ActiveWindow.ScrollRow = 598
ActiveWindow.ScrollRow = 506
ActiveWindow.ScrollRow = 461
ActiveWindow.SmallScroll Down:=75
[color=#FFFF00]Range("A557").Select
ActiveSheet.Paste
[/color]
Workbooks.Open Filename:= _
"C:\Documents and Settings\luigi.orsini\Desktop\TicketBO.csv"
Columns("A:A").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), TrailingMinusNumbers:=True
StartRange = "A2:I2"
EndRange = "I2"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a, b).Select
Selection.Copy
Windows("Macro Conteggio.xlsm").Activate
ActiveWindow.ScrollRow = 552
ActiveWindow.ScrollRow = 598
ActiveWindow.ScrollRow = 690
ActiveWindow.ScrollRow = 736
ActiveWindow.ScrollRow = 1242
ActiveWindow.ScrollRow = 1288
ActiveWindow.ScrollRow = 1380
ActiveWindow.ScrollRow = 1517
ActiveWindow.ScrollRow = 1655
ActiveWindow.ScrollRow = 1563
ActiveWindow.ScrollRow = 1517
ActiveWindow.ScrollRow = 1471
ActiveWindow.ScrollRow = 1380
ActiveWindow.ScrollRow = 1334
ActiveWindow.ScrollRow = 1242
ActiveWindow.ScrollRow = 1058
ActiveWindow.ScrollRow = 1012
ActiveWindow.ScrollRow = 920
ActiveWindow.ScrollRow = 644
ActiveWindow.SmallScroll Down:=318
Range("A1017").Select
ActiveSheet.Paste
Range("E1001").Select
ActiveWindow.ScrollRow = 966
ActiveWindow.ScrollRow = 874
ActiveWindow.ScrollRow = 415
ActiveWindow.ScrollRow = 323
ActiveWindow.ScrollRow = 1
Franciscu
Newbie
 
Post: 2
Iscritto il: 07/11/13 12:44

Re: Macro Excel - Copia base dati su celle contigue

Postdi Anthony47 » 08/11/13 00:40

Allora...
Ho capito che il grosso del lavoro la macro lo fa gia', ti manca solo riuscire a dire (invece dell' istruzione in rosso) "seleziona la prima cella libera in colonna A".
Per questo userai:
Codice: Seleziona tutto
Cells(Rows.count,"A").End(xlUp).Offset(1,0).Select

Fai sapare dove arrivi, ciao.
PS: le istruzioni tipo ActiveWindow.ScrollRow = xyz sono tutte superflue e le puoi eliminare.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro Excel - Copia base dati su celle contigue":


Chi c’è in linea

Visitano il forum: Nessuno e 53 ospiti