salve,
ho modificato la macro originale di flash per ottenere due versioni differenti della stessa macro da inserire in due cartelle diverse, nelle quali si eseguono differenti calcoli.
nella cartella Prova1, importo i valori della cartella Prova2.
nella prima macro ho inserito le due linee evidenziate in modo da accodare i valori, importati, nella prima cella vuota sotto i valori già esistenti in Prova1;
per questa macro chiedo il vostro parere sulla sua corretteza.
- Codice: Seleziona tutto
Sub IMPORTA_ACCODA()
'LA MACRO ACCODA I VALORI A PARTIRE DALLA CELLA D3
Application.ScreenUpdating = False
Workbooks.OpenText Filename:="E:\PROVA\PROVA1.xls"
Windows("PROVA1.xls").Activate
Rng = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
Range("D3:M" & Rng).Select
Selection.Copy
Windows("PROVA2.xls").Activate
Sheets("Foglio1").Select
Set Rng = Range([D3], [D3].End(xlDown)) '<<<<<<
[D3].End(xlDown).Offset(1, 0).Activate '<<<<<<
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
Application.DisplayAlerts = False
Windows("PROVA1.xls").Close SaveChanges:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
per la seconda macro, se ho già importato ad esempio il range D3:M20, è inutile ripetere l'importazione, per cui importiamo solo il range successivo, D21:M50, e lo accodiamo al range importato in precedenza.
- Codice: Seleziona tutto
Sub IMPORTA_ACCODA_RANGE()
'LA MACRO ACCODA I VALORI A PARTIRE DALLA CELLA D3
Application.ScreenUpdating = False
Worksheets("Foglio1").Select
'LA VARIABILE RngIni CONTA LE RIGHE OOCUPATE NEL FOGLIO 1
'PRIMA DI ESEGUIRE L'IMPORTAZIONE
RngIni = Sheets("Foglio1").Range("D" & Rows.Count).End(xlUp).Row
Range("P3").Value = RngIni
Workbooks.OpenText Filename:="E:\PROVA\PROVA2.xls"
Windows("PROVA2.xls").Activate
Rng = Sheets("Foglio1").Range("D" & Rows.Count).End(xlUp).Row
Range("P3").Value = RngIni
UR = Rng - RngIni '<<<<<<<<<
Range("D3:M" & UR).Select
Selection.Copy
Windows("PROVA1.xls").Activate
Sheets("Foglio1").Select
Set Rng = Range([D3], [D3].End(xlDown))
[D3].End(xlDown).Offset(1, 0).Activate
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
Application.DisplayAlerts = False
Windows("PROVA2.xls").Close Savechanges:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
il problema è nella riga evidenziata in quanto calcola le righe partendo dal basso per cui importa le celle superiori già importate in precedenza.
non riesco a modificare il conteggio delle righe per partire dall'alto, o comunque per copiare il range non ancora importato.
si tratta di una differenza aritmetica tra i range delle due cartelle, problema elementare che non riesco a risolvere.
come modifico la macro?
ciao grazie