Condividi:        

Copia -> Incolla valori da file excel esterno

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

Copia -> Incolla valori da file excel esterno

Postdi oz85 » 26/03/18 14:45

Ciao a tutti! Nuovo di forum posto un problema di cui non so proprio come risolvere...

Vorrei importare un file excel che può chiamarsi in diversi nomi, questi file hanno sempre la stessa estensione: xls.

Con "importare" intendo che la macro dovrebbe aprire il file excel selezionato, copiare un range definito di valori ed incollarli sul foglio attuale dove sarà presente la macro. Fondamentalmente devo fare un copia ed incolla. Allego il link della foto che fa vedere che la formattazione è abbastanza particolare ma non credo questo possa essere un problema. Ho cercato di creare un codice base con la registrazione macro ma non riesco.... Qualcuno può aiutarmi? Grazie.


PS: Sono riuscito a creare questa macro. I problemi sono due:

• La macro funziona se aperto il file, invece vorrei che fosse una procedura guidata con l'apertura della classica finestra explorer che faccia scegliere il file da importare;
• Il nome del file. Credo che risolvendo il primo punto si risolva anche questo. Ad ogni modo, il problema è che la macro si aggancia ad un nome specifico, quando in base all'evenienza i nomi dei file cambiano, essendo composti da codici distintivi.

Sub UPLOAD_A()
'
' UPLOAD_A Macro
'

'
Windows("DISTINTA A_0F004305-DG9.xls").Activate
Range("A1:E3").Select
ActiveWindow.SmallScroll Down:=579
Range("A1:BO590").Select
Selection.Copy
Windows("MULTI DT.xlsm").Activate
ActiveWindow.SmallScroll Down:=-6
Range("S9:W11").Select
ActiveSheet.Paste
Range("S2:X2").Select
End Sub
oz85
Utente Junior
 
Post: 92
Iscritto il: 26/03/18 14:35

Sponsor
 

Re: Copia -> Incolla valori da file excel esterno

Postdi patel » 27/03/18 09:26

per aprire un file selezionandolo ci sono vari modi, uno è questo
Codice: Seleziona tutto
Sub ApriDialog()
FName = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
Set mybook = Workbooks.Open(FName)
End Sub
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Copia -> Incolla valori da file excel esterno

Postdi Anthony47 » 27/03/18 11:33

Integrando quanto proposto da patel (vedi sopra) nella tua macro, il risultato potrebbe essere questo:
Codice: Seleziona tutto
Sub UPLOAD_A2()
Dim FileN, myBook As Workbook
'Scegli file e Apri:
    fname = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
    If Not fname Then
        MsgBox ("Nessuna voce selezionata, procedura annullata")
        Exit Sub
    End If
    Set myBook = Workbooks.Open(fname)
'Import:
    Range("A1:BO590").Copy
    'Windows("MULTI DT.xlsm").Activate
    ThisWorkbook.Activate
    Range("S9").Select
    ActiveSheet.Paste
    Range("S2:X2").Select
'Chiudi secondo file:
    myBook.Close False
End Sub

Il codice va messo in un Modulo standard del vba all'interno del file che raccoglie le importazioni (che se non ho capito male si chiama "MULTI DT.xlsm"); il file importato viene chiuso alla fine dell'operazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia -> Incolla valori da file excel esterno

Postdi oz85 » 31/03/18 13:44

Scusa il ritardo nel rispondere! ho fatto un piccolo corso di 8 ore sul VBA e ovviamente sono uscito con le ossa rotta, in ogni caso ti ringrazio infinitamente per il codice creato, fa esattamente quello che volevo fare. Pensavo di racchiudere alcuni codici creati come questo all'interno di jpeg o file .ico caricati sul foglio che andrebbero a svolgere la funzione di tasti "carini" da visualizzare associata alla funzione che ne comporta l'uso. Ho scoperto però che anche se è la stessa cosa, sarebbe meglio utilizzare le maschere anzichè immagini... vabbè per ora lascerò tutto così. Un ultima cosa...

In pratica parlando con la persona che è venuta a fare il corso, mi suggeriva di modificare la macro così da ottimizzarla.

La macro che ho chiesto, dovrebbe attingere fino a 5 file diversi. La mia idea era quella di creare 5 bottini per caricare i file che vanno da "A" fino "E". L'utente clicca sul primo tasto e carica i valori che vengono incollati nel primo range ("W9:CF708"), eventualmente se occorre, si carica il secondo file, incollato nel range sottostante (W709:CF1408) e così via.

La macro, mi diceva, può essere creata senza stare a specificare il range, ma utilizzando il comando SelectCase (scusate la sintassi se è sbagliata) ai fini di inserire un valore ed in base a quello, la macro apriva il file, copiava ed incollava i valori nel range disponibile.

So che forse ho scritto senza rendere bene l'idea. Se occorre carico un esempio. In ogni caso, non è un problema creare 5 macro distinte con i propri range. Grazie in anticipo per l'aiuto e Buona Pasqua!

Anthony47 ha scritto:Integrando quanto proposto da patel (vedi sopra) nella tua macro, il risultato potrebbe essere questo:
Codice: Seleziona tutto
Sub UPLOAD_A2()
Dim FileN, myBook As Workbook
'Scegli file e Apri:
    fname = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
    If Not fname Then
        MsgBox ("Nessuna voce selezionata, procedura annullata")
        Exit Sub
    End If
    Set myBook = Workbooks.Open(fname)
'Import:
    Range("A1:BO590").Copy
    'Windows("MULTI DT.xlsm").Activate
    ThisWorkbook.Activate
    Range("S9").Select
    ActiveSheet.Paste
    Range("S2:X2").Select
'Chiudi secondo file:
    myBook.Close False
End Sub

Il codice va messo in un Modulo standard del vba all'interno del file che raccoglie le importazioni (che se non ho capito male si chiama "MULTI DT.xlsm"); il file importato viene chiuso alla fine dell'operazione.

Ciao
oz85
Utente Junior
 
Post: 92
Iscritto il: 26/03/18 14:35

Re: Copia -> Incolla valori da file excel esterno

Postdi Anthony47 » 31/03/18 19:22

La macro proposta serve per quello che fu chiesto: selezionare un file e importarlo.

Se devi importare piu' file allora dovresti chiarire se i file ocupano per definizione un'area precisa, o se ognuno va "accodato" al precedente; e se la scelta di quanti file importare la fai all'inizio, o se parti con un file e poi vedi se e' il caso di importarne un secondo e poi un terzo e poi etc etc; se la scelta la fai all'inizio e' anche utile sapere se i file sono tutti nella stessa directory o se invece ne devi scegliere uno qua e l'altro la'.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia -> Incolla valori da file excel esterno

Postdi oz85 » 05/04/18 14:33

Ciao! In pratica ho una grafica di questo tipo, dove ho previsto l'utilizzo di 5 tastini dove in base ad ogni click avviene un importazione in un area sempre definita che sarebbe una di seguito all'altra. Sotto riporto i range.

W11:CF710
W711:CF1410
W1411:CF2110
W2111:CF2810
W2811:CF3510

Da come ho capito per utilizzare un unica macro potrei utilizzare il comando SELECT CASE ma questo, correggimi se sbaglio, significherebbe che dovrei inserire un valore definito in SELECT CASE affinchè la macro percepisca lo spazio dove incollare i valori copiati, esatto?
Se così fosse non sarei interessato, perchè vorrei che un operatore cliccasse semplicemente sul tasto anzichè inserire prima un valore.

Immagine
oz85
Utente Junior
 
Post: 92
Iscritto il: 26/03/18 14:35

Re: Copia -> Incolla valori da file excel esterno

Postdi patel » 05/04/18 17:35

ogni pulsante deve essere collegato ad una macro che definisce il range e poi chiama la sub che fa il lavoro
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Copia -> Incolla valori da file excel esterno

Postdi Anthony47 » 06/04/18 02:08

patel ha scritto: ogni pulsante deve essere collegato ad una macro che definisce il range e poi chiama la sub che fa il lavoro

Ad esempio, da associare ai pulsanti:
Codice: Seleziona tutto
Sub Pulsante1()
    Call UPLOAD_A2("W11")
End Sub

Sub Pulsante2()
    Call UPLOAD_A2("W711")
End Sub

'etc etc per gli altri pulsanti

che richiama questa versione modificata della UPLOAD_A2:
Codice: Seleziona tutto
Sub UPLOAD_A2(ByVal myA1 As String)     'MMM
Dim FileN, myBook As Workbook
'Scegli file e Apri:
    fname = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
    If Not fname Then
        MsgBox ("Nessuna voce selezionata, procedura annullata")
        Exit Sub
    End If
    Set myBook = Workbooks.Open(fname)
'Import:
    Range("A1:BO590").Copy
    'Windows("MULTI DT.xlsm").Activate
    ThisWorkbook.Activate
'    Range("S9").Select         '---
    Range(myA1).Select          '+++
    ActiveSheet.Paste
    Range("S2:X2").Select
'Chiudi secondo file:
    myBook.Close False
End Sub

SelectCase lo useremo in una futura situazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia -> Incolla valori da file excel esterno

Postdi oz85 » 06/04/18 06:54

Spettacolo, grazie tante! siete stati gentilissimi! grazie per il prezioso aiuto! :-)
oz85
Utente Junior
 
Post: 92
Iscritto il: 26/03/18 14:35


Torna a Applicazioni Office Windows


Topic correlati a "Copia -> Incolla valori da file excel esterno":


Chi c’è in linea

Visitano il forum: Gianca532011 e 87 ospiti