mi sono imbattuto in un problema "strano".
ho un file di origine che contiene un database, dal quale lancio una macro per creare un nuovo file con 4-5 pagine e copiare alcuni set di dati dal database di origine.
il database di origine, con macro, formule, fomattazioni e diverse pagine pesa circa 2MB, il nuovo file creato dalla macro ne pesa OLTRE 160MB !
e non capisco perche...
ho usato questo codice base
- Codice: Seleziona tutto
Windows(Origine).Activate '-- è il file di origine contenente il database
Call SettaUnioneUno 'copia i dati del file di origine
Windows("Output.xlsx").Activate '-- è il file di finale creato dalla macro
UnioneUNO.Copy Worksheets("UNO").Range("A1") '--UnioneUNO viene creata dalla sub SettaUnioneUno --- può essere in questo comando di copia il problema?
per completezza la sub richiamata sopra è indicata sotto. Per velocizzare l'perazione ho usato Union definendo dei range di colonne da copiare in funzione di alcune variabili globali.
- Codice: Seleziona tutto
Sub SettaUnioneUNO()
Sheets("OrigineUno").Select
Set PrimiCampi = Range("F:X") '), Cells(1, 16).End(xlDown)) ' Campi iniziali fissi
Codici = Variabile1 'variabile Globale (definita in altra parte)
Valore= Variabile2 'VariabileGlobale (definita in altra parte)
Posizioni= Variabile2 'VariabileGlobale (definita in altra parte)
Set UnioneUNO = Union(PrimiCampi, Columns(Codici), Columns(Codici + 1), Columns(Valore), Columns(Valore+ 1), Columns(Posizioni), Columns(Posizioni + 1))
End Sub
la cosa che non capisco è che la stessa struttura l'ho usata anche per un altra macro e funziona senza problemi.
L'unica differenza e che i campi che compongono UnioneUno hanno al loro interno delle formule.
giusto per info.
se manualmente prendo il file finale creato (che contiene dalle 200 alle 400 riche a pagina e lo copio ed incollo su un nuvo file, le dimensioni di ques'ultimo sono di poki kb, come dovrebbe essere.
sapete darmi una dritta?
grazie.