Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

importare colonne da file xls

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

importare colonne da file xls

Postdi miko » 18/03/10 20:05

buona sera a tutti,
vorrei importare in un file excel un determinato numero di colonne non contigue prelevandole da un altra cartella excel.
le colonne sono sempre le stesse mentre variano, in aumento, le righe.
leggendo vari topic sull'argomento sono riuscito a realizzare una macro che quasi funziona.
l'importazione avviene ma una finestra avvisa che ci sono molti dati negli appunti e se si vuole renderli disponibili etc. etc.
eppure non importo molti dati e agisco su poche colonne.
vi allego il file zip con le due cartelle prova1 e prova2, identiche, ed all'interno di prova 2 trovate la macro.
http://www.filedropper.com/prova2
come devo modificarla?
saluti grazie.
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: importare colonne da file xls

Postdi Flash30005 » 18/03/10 21:20

devi aggiungere un paio di righe (una prima e una dopo il close con salva file)
Codice: Seleziona tutto
Sub IMPORTA_XLS()
    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
    Rng = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
    Range("D3:M" & Rng).Select
    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
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: importare colonne da file xls

Postdi miko » 19/03/10 10:57

salve,
la macro funziona bene.
inizialmente, durante le mie prove, inserivo UR invece di Rng, e mi dava errore alle linee:
Rng = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
eppure sono sempre lettere o variabili
quando hai tempo se puoi scrivere qualche parola, vorrei capire la differenza.
grazie saluti
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: importare colonne da file xls

Postdi Flash30005 » 20/03/10 02:21

No c'è alcuna differenza penso dipenda da una non completa sostituzione della variabile
se cambi una variabile ti devi ricordare di cambiarla ad ogni utilizzo della suddetta variabile

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: importare colonne da file xls

Postdi miko » 22/03/10 12:18

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
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: importare colonne da file xls

Postdi miko » 22/03/10 12:31

ho dimenticato di precisare che per entrambe le due cartelle è noto, tramite macro, il numero di righe occupate, rng ed rngini;
le colonne sono uguali in ambedue i file, e non sono contigue.
ciao grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: importare colonne da file xls

Postdi Flash30005 » 22/03/10 23:30

Ma non facevi prima ad inviare i due file e a dire dove incontravi l'inconveniente?
Se io salvo queste due macro su una cartella vuota di excel cosa succede?

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: importare colonne da file xls

Postdi miko » 23/03/10 11:13

buon giorno,
hai ragione, pensavo fosse più semplice inserire le macro, ed invece..
ho preparato i file di esempio;
http://www.filedropper.com/importa
nel file zip ci sono i tre file PROVA1-2-3, necessari;
il modulo 1 di PROVA1 contiene la macro che interagisce tra PROVA1 e PROVA2;
mentre nel modulo 2 si trova la macro che opera tra PROVA1 e PROVA3.
per non dilungarmi troppo in questo topic ho indserito nei moduli dei commenti che spiegano il funzionamento delle macro e quello che vorrei ottenere.
vedi anche il file PROVA3 per comprendere il tipo di calcolo che vorrei effettuare.
ciao grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: importare colonne da file xls

Postdi Flash30005 » 23/03/10 23:41

File non trovato!!! :roll:

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: importare colonne da file xls

Postdi miko » 24/03/10 00:51

riprovo ad inviare il file,
http://www.filedropper.com/importa
ciao
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: importare colonne da file xls

Postdi Flash30005 » 24/03/10 10:33

Ti sei andato a complicare la vita quando le cose erano molto più semplici
questo è il pacchetto con i file

e questa è la macro
Codice: Seleziona tutto
Sub IMPORTA1_3() 'MACRO TRA PROVA1 E PROVA3
'LA MACRO ACCODA I VALORI A PARTIRE DALLA CELLA D3
    Application.ScreenUpdating = False  '<<< AGGIUNTA
     Worksheets("Foglio1").Select
'CONTIAMO LE RIGHE NEL FOGLIO 1 DI PROVA1
'PRIMA DI ESEGUIRE L'IMPORTAZIONE
RngIni = Sheets("Foglio1").Range("D" & Rows.Count).End(xlUp).Row '<<< AGGIUNTA
  Range("P3").Value = RngIni '<<< AGGIUNTA,                <<<<NON SERVE
   
    Workbooks.OpenText Filename:="E:\PROVA\PROVA3.xls"
    Windows("PROVA3.xls").Activate
 
 Rng = Sheets("Foglio1").Range("D" & Rows.Count).End(xlUp).Row '<<< AGGIUNTA
    Range("P3").Value = RngIni '<<< AGGIUNTA, <<<<<<<<  NON SERVE
    UR = Rng - RngIni '<<< AGGIUNTA    <<<<<<<<  NON SERVE   
    Range("B" & RngIni + 1 & ":M" & Rng).Select    '<<<<< SOSTITUISCE TUTTO
    Selection.Copy
   
    Windows("PROVA1.xls").Activate
    Sheets("Foglio1").Select
    Range("B" & RngIni + 1).Select   '<<<<<<<<< posiziona il cursore nella prima cella libera per incollare
    'Set Rng = Range([D3], [D3].End(xlDown)) '<<< AGGIUNTA  <<<<<<<< NON SERVE
     ' [D3].End(xlDown).Offset(1, 0).Activate  '<<< AGGIUNTA  <<<<<<<< NON SERVE
     
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Range("A1").Select
    Application.DisplayAlerts = False
        Windows("PROVA3.xls").Close Savechanges:=True
    Application.DisplayAlerts = True
   
    Application.ScreenUpdating = True '<<< AGGIUNTA
End Sub


Non ho modificato la macro di importazione dei dati prova2 perché penso che ora puoi fare da solo e anche perché non ho capito la differenza esistente tra prova1 e prova2

Non capisco il perché nella prova1 hai i dati anche nella colonna B mentre nella prova3 copi dalla colonna D


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "importare colonne da file xls":


Chi c’è in linea

Visitano il forum: Anthony47 e 6 ospiti