Importare dati da un altro file con macro



  • Importare dati da un altro file con macro
    di pellamy88 (utente non iscritto) data: 13/04/2016 22:18:18

    Salve a tutti, vorrei creare una macro che, alla pressione di un tasto, vada a copiarmi e incollarmi i VALORI (e se possibile, trasformare anche in formato NUMERO nel caso gia non lo fosse) presenti in un file all'interno di un altro.

    Quindi, 2 file. Uno base, con la macro copia-incolla valori (formato numero) e un altro variabile, con le colonne da copiare.
    Vorrei aggiungere un controllo su una cella del foglio Base dove inserire il nome del file da cui prendere i dati (all'interno della stessa cartella).

    Allego i due file per farvi capire meglio: file BASE , file SORGENTE.
    Grazie mille a chi risolverà questo quesito



  • di alfrimpa data: 14/04/2016 12:05:05

    Ciao Roberto

    Sempre domande semplici tu eh?

    Ci sto provando

    Alfredo





  • di alfrimpa data: 14/04/2016 14:06:38

    Ciao Roberto allora cominciamo

    Ti allego file (Pellamy3.xlsm) dove ho messo la macro che vedi sotto che fa questo

    1) Apre il file il cui nome è in B4
    2) fa la copia dei valori delle colonne A e D e le copia nelle rispettive colonne del file Pellamy3
    3) Chiude il file (sorgente) da cui è stata fatta la copia.

    Purtroppo ho dovuto eliminare la struttura Tabella presente nel file (ex FileBASE) perché quesa mi dava problemi con il VBA (evidentemente quando c'è una tabella occorre usare istruzioni che al momento non conosco).

    Prova il file e poi eventualmente andiamo avanti.

    Alfredo 
     
    Sub macro()
    Dim SorgAur As Long
    Dim SorgDur As Long
    Dim BaseAur As Long
    Dim BaseDur As Long
    Dim myPath As String
    Application.ScreenUpdating = False
    Range("a9:a100").ClearContents
    Range("d9:d100").ClearContents
    myPath = "c:excel"   <==== Da modificare con il tuo percorso
    Workbooks.Open myPath & Range("B4").Value & ".xlsx" <=== Da modificare eventualmente l'estensione
    Windows("sorgente.xlsx").Activate
    SorgAur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    SorgDur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
    Range("a7:a" & SorgAur).Copy
    Windows("Pellamy3.xlsm").Activate
    BaseAur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    ActiveWorkbook.ActiveSheet.Range("a" & BaseAur + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Windows("sorgente.xlsx").Activate
    Range("d7:d" & SorgDur).Copy
    Windows("Pellamy3.xlsm").Activate
    BaseDur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
    ActiveWorkbook.ActiveSheet.Range("d" & BaseDur + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Windows("sorgente.xlsx").Activate
    ActiveWorkbook.Close
    Range("a8").Select
    Application.ScreenUpdating = True
    End Sub






  • di pellamy88 (utente non iscritto) data: 15/04/2016 13:10:54

    Grazie mille alfredo come sempre..
    Ho notato che hai specificato "sorgente" nel codice, però il codice dovrebbe prendere la stringa di testo inserita manualmente sulla cella (ad esempio se il file si chiamerà appunto sorgente, andrò a scrivere sorgente sulla cella e dopo di che il codice legge quella cella e mi va ad aprire quel file li .. )..



  • di alfrimpa data: 15/04/2016 13:37:09

    Ciao Roberto

    Avevo già previsto una tua domanda del genere per cui ho modificato un po' il file e te lo riallego di nuovo (Pellamy4).

    In pratica sopra la cella B4 ho inserito una combobox che quando la apri ti visualizza tutti i file presenti in una data directory.

    Scelto il file clicchi sul pulsanto "macro" e viene eseguito il tutto.

    Sotto vedi la macro associata alla combo per il riempimento della stessa.

    Prova un po' e fai sapere.

    Alfredo
     
    Private Sub ComboBox1_DropButtonClick()
    Dim varDirectory As Variant
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String
    strDirectory = "c:excel" '<==== Qui devi mettere il tuo percorso
    i = 1
    flag = True
    varDirectory = Dir(strDirectory, vbNormal)
    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
            ComboBox1.AddItem (varDirectory)
            varDirectory = Dir
            i = i + 1
        End If
    Wend
    End Sub
    






  • di pellamy88 (utente non iscritto) data: 15/04/2016 15:32:15

    Alfredo.. innanzitutto la tua idea è stupenda, avere una combo box con la lista dei file presenti in cartella è davvero interessante! E' un ottima funzione .. stavo cercando di capire come risolvere un paio di problemi:

    1) nel codice continua ad esserci "sorgente" e non l'eventuale nome variabile scritto (o scelto) nella combo box
    2) c'è un problema quando clicco sulla combo box, ogni volta va a duplicare i nomi dei file (se clicco 10 volte e ho un solo file nella cartella, mi fa vedere 10 volte il file con lo stesso nome).
    3) ultima cosa, sarebbe bello non dover mettere in predefinito una cartella, ma semplicemente la cartella nella quale è presente il file base. Ovvero, se io salvo il file in C:documenti sarebbe bello che la lista di file nella combo box andasse a pescare i file all'interno di c:documenti . In questo modo basterà tenere nella stessa directory i file..

    Grazie mille alfredo come sempre il migliore.. spero anche che queste situazioni possano "stimolare" un po' l'ingegno di chi, come te, si cimenta sempre in nuove esperienze e risoluzioni!



  • di alfrimpa data: 15/04/2016 16:07:23

    Ciao Roberto

    Ti riallego nuovo file (Pellamy6) modificato rispetto al precedente dove ho inserito in Workbook_Open()
    la macro che vedi sotto (ti ho messo già il tuo percorso c:Documenti).

    Tieni presente che se aggiungi nuovi file in Documenti devi salvare, chiudere il file e riaprirlo.

    Prova un po' e fai sapere.

    Alfredo

    P.S. Cancella i precedenti file.
     
    Private Sub Workbook_Open()
    Dim varDirectory As Variant
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String
    strDirectory = "c:Documenti"
    i = 1
    flag = True
    varDirectory = Dir(strDirectory, vbNormal)
    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
            Worksheets("Foglio1").ComboBox1.AddItem (varDirectory)
            varDirectory = Dir
            i = i + 1
        End If
    Wend
    End Sub






  • di pellamy88 (utente non iscritto) data: 16/04/2016 21:36:20

    Ciao alfredo, scusa se rispondo solo adesso, ho avuto alcuni problemi a connettermi..
    Non riesco a trovare l'allegato "pellamy6" non me lo indica in lista, forse non te l'ha uploadato..



  • di alfrimpa data: 16/04/2016 22:57:47

    Strano ero convinto di averlo allegato.

    Comunque rieccolo.

    Fammi sapere.

    Alfredo





  • di pellamy88 (utente non iscritto) data: 17/04/2016 11:33:28

    Ciao alfredo, purtroppo mi restituisce un errore in vba relativo al percorso del file .. E non vedo piu l'elenco dei file nella combo box.
    Dici che è possibile far si che il percorso sia variabile? Ovvero, basterebbe che il percorso da cui prendere l'elenco dei file sia sempre quello dove è presente il file base.. quindi basterebbe che i file siano "vicini". In questo modo non si forza il salvataggio dei file in una cartella specifica e via dicendo..



  • di alfrimpa data: 17/04/2016 18:21:23

    Ciao Roberto

    Scusa ma tu una directory "C:Documenti" ce l'hai?

    Perché se non ce l'hai la devi creare e metterci dentro il/i tuoi file.

    Ame con la mia directory funziona perfettamente.

    Per la seconda domanda devo fare delle prove.

    Fammi sapere.

    Alfredo





  • di alfrimpa data: 17/04/2016 18:36:14

    Ciao Roberto

    Ti allego ennesimo file (Pellamy7.xlsm) dove ho apportato modifiche al codice delle due macro ivi inserite. Te le riporto qui sotto giusto per stimolare la tua curiosità a capire.

    La prima è inserita nell'Evento Workbook_Open() e serve per alimentare la combobox dei file presenti nella directory dove è Pellamy7 (o il tuo FileBASE ma per il momento forse è meglio che usi il nome Pellamy7).

    La seconda fa il lavoro di apertura del file selezionato in tendina della combo, copia dei dati, incollaggio su Pellamy7 e chiusura senza salvare del precedente file.

    Spero di essere stato chiaro e che, soprattutto, tutto funzioni.

    Fai sapere.

    Alfredo 

    P.S. Ho or ora scoperto un altro piccolo errore; attendi un attimo.
     
    Private Sub Workbook_Open()
    Dim varDirectory As Variant
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String
    strDirectory = ActiveWorkbook.Path & ""
    i = 1
    flag = True
    varDirectory = Dir(strDirectory, vbNormal)
    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
            Worksheets("Foglio1").ComboBox1.AddItem (varDirectory)
            varDirectory = Dir
            i = i + 1
        End If
    Wend
    End Sub
    
    
    Sub macro()
    Dim SorgAur As Long
    Dim SorgDur As Long
    Dim BaseAur As Long
    Dim BaseDur As Long
    Dim myPath As String
    Dim cartella As String
    Application.ScreenUpdating = False
    cartella = Range("B4").Value
    Range("a9:a100").ClearContents
    Range("d9:d100").ClearContents
    myPath = "c:excel"
    Workbooks.Open myPath & cartella
    Windows(cartella).Activate
    SorgAur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    SorgDur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
    Range("a7:a" & SorgAur).Copy
    Windows("Pellamy7.xlsm").Activate
    BaseAur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    ActiveWorkbook.ActiveSheet.Range("a" & BaseAur + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Windows(cartella).Activate
    Range("d7:d" & SorgDur).Copy
    Windows("Pellamy7.xlsm").Activate
    BaseDur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
    ActiveWorkbook.ActiveSheet.Range("d" & BaseDur + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Windows(cartella).Activate
    ActiveWorkbook.Close
    Range("a8").Select
    Application.ScreenUpdating = True
    End Sub






  • di alfrimpa data: 17/04/2016 18:42:59

    Allora non considerare il precedente Pellamy7 ma il nuovo Pellamy8 (chissà a che numero arriveremo )

    Alfredo





  • di alfrimpa data: 17/04/2016 19:02:15

    Ciao Roberto

    Ti allego l'ultimo (spero) file Pellamy10

    In quest'ultima versione ho eliminato il pulsante macro ed il tutto viene eseguito scegliendo il file all'interno della combobox.

    Ho anche "generalizzato" le routine in modo che comunque si chiami il file (Pellamy o FileBASE o altro) tutto dovrebbe funzionare.

    Prova anche questa e fai sapere.

    Alfredo





  • di alfrimpa data: 17/04/2016 19:46:59

    Ciao Roberto

    Ti lascio un'ultima chicca relativamente all'alimentazione della combobox.
    Volendo si potrebbe "filtrare" l'elenco dei file presenti in una determinata directory secondo alcuni criteri.

    Ad esempio con la macro che vedi sotto compariranno nella combobox solo i file che iniziano per "s".

    Fammi sapere se ti interessa questa cosa 
     
    Private Sub Workbook_Open()
    Dim varDirectory As Variant
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String
    strDirectory = ActiveWorkbook.Path & ""
    i = 1
    flag = True
    varDirectory = Dir(strDirectory, vbNormal)
    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
        If Left(varDirectory, 1) = "s" Then
            Worksheets("Foglio1").ComboBox1.AddItem (varDirectory)
             i = i + 1
        End If
            varDirectory = Dir
        End If
    Wend
    End Sub






  • di pellamy88 (utente non iscritto) data: 17/04/2016 21:53:44

    Alfredo.. non ho parole! Grazie veramente.. sei un genio fattelo dire.. non pensavo nemmeno si potessero ottenere certi risultati sinceramente.. funziona tutto molto bene, ci sono solo delle piccole cose che preferirei cambiare ma non voglio tormentarti davvero .. :D Io ti dico solamente cosa potrebbe solo andare a migliorare il tutto.. allora, secondo me, ci vorrebbe qualcosa che legga la presenza di nuovi file (senza doverlo chiudere e riaprire) ma probabilmente appesantirebbe soltanto il file poichè sarebbe un controllo continuo (e l'ausilio di un ulteriore tasto non mi piace per niente..). Inoltre Alfredo, c'è una qualche ragione per aver tolto il tasto ? A me piaceva molto poichè volevo lasciarlo come alternativa al fare tutto manualmente, quindi oltre a selezionare all'interno della combo box, sarebbe stato bello cliccare per vederne poi i risultati.. Ora toccherà a me adattarlo con la copia incolla di altre colonne, o strutturarlo un attimo in modo diverso ma non so come ringraziarti davvero :) .

    P.s. ovviamente ogni codice che fai, cerco di studiarmelo per imparare!



  • di alfrimpa data: 17/04/2016 22:44:20

    Ciao Roberto

    Ti ringrazio per le belle parole ma, credimi, i geni sono altri .

    Poichè attingo molto da Internet se proprio devo riconoscermi una qualche abilità è quella di sapere cosa cercare e come modificarla per adattarla alla richiesta dell'utente (e qualche volta mi meraviglio io stesso dei risultati raggiunti anche se talvolta devo fare prove su prove).

    E ora veniamo alle tue domande.

    1) Avevo tolto il tasto "Macro" perchè mi sembrava più "carino" eseguire il tutto automaticamente al variare della scelta nella combo ma possiamo tranquillamente ripristinare il pulsante.

    2) Relativamente all'aggiornamento del contenuto della combo avevo ritenuto comodo mettere l'esecuzione del codice all'apertura del file ma, se vuoi, possiamo associarlo ad un altro evento (dovremo vedere quale) oppure associarla ad un altro pulsante. Magari ci penso ma tu dimmi che idee hai in proposito.

    Infine mi rendo conto che non è cosa semplice capire il codice che, se in alcune parti è "parlante" nel senso che si intuisce quel che fa, in altre lo è decisamente meno come quando ci sono variabili, cicli o istruzioni specifiche.

    Per capire queste ultime occorre avere un po' di conoscenza del VBA.

    Tu a che livello ti poni in questo? Se hai domande chiedi pure.

    Se ti può consolare pensa che io sino a tre anni fa di VBA non ne sapevo nulla .

    Alfredo





  • di pellamy88 (utente non iscritto) data: 18/04/2016 12:19:38

    Ciao Alfredo, ho usato la parola genio proprio perchè sai cosa tirar fuori al volo senza girarci troppo attorno, poi sono sicuro che chiunque attinge un po' qua e la per internet (per fortuna che esiste..) però mettere insieme i vari codici e farli funzionare nel modo corretto non è cosi banale, altrimenti avrei fatto lo stesso io fin da subito senza scrivere qui sul forum.. : )

    Comunque tornando alle domande, io direi che il pulsante per attivare la macro è carino poichè la funzione del copia-incolla di quei valori da un altro file rimane un "extra" e non una cosa obbligatoria da fare ogni volta (però capita di dover fare di fretta e questa cosa che prende si e no 5 secondi è davvero un ottima idea).
    Ho notato un piccolo problema ovvero quello che la combo box rileva tutte le estensioni di file (mi è capitato di provare ad aprire un file mp3... ovviamente il risultato è stato molto strano e particolare :D ) secondo te è possibile limitare la visibilità solo a tutti i formati accettati da excel ? (in particolare il formato classico + quello binario)

    Ultima cosa, per quanto riguarda l'aggiornamento della lista in combo box, certamente è una richiesta che va oltre al normale utilizzo (si potrebbe benissimo chiudere e riaprire ogni volta, senza alcun problema..) però potrebbe tornare utile nel caso si scarichino tanti file .. aggiungere un ulteriore tasto potrebbe essere una soluzione, ad esempio un piccolo tasto con la classica icona del refresh.. che dici ?

    Grazie mille Alfredo, come sempre



  • di alfrimpa data: 18/04/2016 12:35:15

    Ciao Roberto

    Le estensioni dei file oltre alle "normali" .xlsx e .xlsm quali altre devono essere?

    Alfredo





  • di pellamy88 (utente non iscritto) data: 18/04/2016 12:49:21

    Ciao Alfredo,

    Allora aggiungiamoci l' .xlsb che è il formato binario.. e poi non so, se dovesse esserci un aggregato che prende solo i file leggibili da excel sarebbe meglio ancora, altrimenti se si devono specificare quei 3 direi che vanno bene! E' fattibile ?



  • di alfrimpa data: 18/04/2016 13:51:42

    Ciao Roberto

    Ti allego nuovo file Pellamy15.xlsm

    dove ho modificato la sottostante routine (dalla precedente) per caricare nella combo i soli file che hanno l'estensione che inizia per "xls" e quindi tutti i file tipici di Excel.

    In verità Excel apre anche i file .txt ma non credo che questi ti interessino.

    Ho anche modificato il file in modo che non sia più necessario richiuderlo e riaprirlo per avere l'aggiornamento della combo; ora basta che "apri" semplicemente la combo e l'aggiornamento viene effettuato.

    Ho anche ripristinato il pulsante "Macro".

    Come sempre fai delle prove e fai sapere.

    Alfredo
     
    Private Sub ComboBox1_DropButtonClick()
    Dim varDirectory As String
    Dim flag As Boolean
    Dim i As Integer
    Dim strDirectory As String
    strDirectory = ActiveWorkbook.Path & ""
    i = 1
    flag = True
    varDirectory = Dir(strDirectory, vbNormal)
    While flag = True
        If varDirectory = "" Then
            flag = False
        Else
        If Mid(varDirectory, Application.WorksheetFunction.Find(".", varDirectory) + 1, 3) = "xls" Then
            Worksheets("Foglio1").ComboBox1.AddItem (varDirectory)
             i = i + 1
        End If
            varDirectory = Dir
        End If
    Wend
    End Sub
    






  • di pellamy88 (utente non iscritto) data: 22/04/2016 17:39:28

    Ciao Alfredo! Ho avuto un sacco di problemi ma eccomi qua.. allora, c'è un problema sull ultimo file allegato, ovvero ogni volta che clicco sulla combo box per scegliere il file , mi refresha e aggiunge i doppioni dei file.. ad esempio se ho 2 file nella cartella, ogni volta li sdoppia .. mentre ci sono, secondo te è possibile inserire un elenco selezionabile anzichè una combo box dove poter scrivere il nome del file ? Ti chiedo questo perchè se io dovessi per sbaglio scrivere male e premere macro, mi da errore di vba perchè giustamente non trova il file.. invece, con un elenco a discesa con i file disponibili il problema non si porrebbe..
    Grazie mille alfredo e buon weekend !



  • di alfrimpa data: 22/04/2016 19:22:36

    Ciao Roberto

    Ora sono fuori e senza pc; devi pazientare un po' e ci risentiamo martedì.

    Alfredo





  • di alfrimpa data: 27/04/2016 18:38:11

    Ciao Roberto

    Ho provato a rivedere il file Pellamy15 (l'ultimo) ma a me non si duplicano i file.

    Puoi controllare meglio?

    Alfredo





  • di pellamy88 (utente non iscritto) data: 28/04/2016 16:38:36

    Ciao Alfredo! Purtroppo a me dava quel problema.. ho provato a riscaricare il file ma non vedo piu gli allegati e non ho modo di recuperare il file 15.. non è che per caso lo avresti ? Grazie mille e scusami



  • di alfrimpa data: 28/04/2016 17:59:17

    Allegato

    Alfredo





  • di pellamy88 (utente non iscritto) data: 03/05/2016 12:50:32

    Ciao Alfredo grazie del file.. non capisco come mai continuo ad avere lo stesso problema.. ovvero, ogni volta che clicco sulla freccia della combobox per scegliere l'eventuale file, vedo duplicarsi/triplicarsi/ecc la lista dei file.. non riesco a capire come mai.. : (



  • di alfrimpa data: 03/05/2016 14:21:13

    Ciao Roberto

    Prova con il nuovo file Pellamy16 allegato.

    Alfredo





  • di pellamy88 (utente non iscritto) data: 03/05/2016 16:07:23

    Beh, che dire.. :D ovviamente ora funziona.. Mitico Alfredo veramente.. grazie.. metto RISOLTO però mi riservo la possibilità di fare qualche altra piccola domanda se avrai tempo di rispondere in futuro !
    Grazie



  • di pellamy88 (utente non iscritto) data: 03/05/2016 16:15:26

    Ecco, alfredo, una domanda.. ora la combo box funziona perchè non c'è piu il problema dei file sdoppiati.. unico neo che si è andato a creare però, è che non fa piu il refresh quindi come dicevi qualche messaggio fa, bisogna chiudere e riaprire la base.. secondo te questo è possibile evitarlo ? oppure rimettendo quella funzione, ricomparirebbe il problema dei file sdoppiati ?



  • di pellamy88 (utente non iscritto) data: 03/05/2016 17:11:43

    Alfredo ho un ulteriore problema. Ho provato a inserire questa funzionalità all'interno del mega file che gia avevo creato.
    Cio' che ho fatto è stato andare su progettazione, inserisci, comboBox e l ho rinominata combobox1 (come nel file che mi hai inviato tu). Dopo di che, sono andato sul codice del Foglio1 (che però si chiama diversamente) e sono andato a modificare laddove c'era "Foglio1" mettendo il nome effettivo del mio Foglio.
    Fatto tutto ciò, non ho ancora fatto la copia del codice macro associato al tasto, ma volevo gia vedere se cio' fatto fino a sto punto funzioni. Mi da un errore del codice VBA subito alla prima riga e cioè : Private Sub ComboBox1_DropButtonClick() .. L'errore è "variabile non definita" .
    In alto, prima di cio', ho inserito Option Explicit, non so se possa centrare..



  • di alfrimpa data: 04/05/2016 11:04:23

    Ciao Roberto

    Ho riverificato il file Pellamy16 e non mi pare avere riscontrato il problema da te segnalato del mancato aggiornamento della combo al variare del contenuto della directory.

    Senza chiudere Pellamy16 ho

    1) Aperto nuovo file, salvato nella directory e chiuso
    2) Ritornato in Pellamy16 ho cliccato sulla combo ed ho visto il nuovo file
    3) Sono andato nella directory e ho cancellato il file
    4) Di nuovo su Pellamy16 ho cliccato sulla combo e quel file non c'era più.

    Il tutto senza dover chiudere e riaprire Pellamy16

    Alfredo





  • di alfrimpa data: 04/05/2016 11:08:48

    Per quanto riguarda l'ultima domanda l'istruzione "Option Explicit" rende obbligatoria la dichiarazione delle variabili per cui se una di queste non è dimensionata ti dà l'errore di "variabile non definita.

    Prova a mettere un apostrofo davanti a "Option Explicit" (così la disabiliti) e vedi che succede

    Se riesci a riprodurre un file (senza dati) e ad allegarlo forse si può vedere meglio.

    Alfredo





  • di pellamy88 (utente non iscritto) data: 09/05/2016 13:20:56

    Ciao Alfredo, come stai?
    Allora come ti dicevo, ho provato a "trasportare" quella funzionalità della combo box nel mio file che avevo gia creato e stavo portando avanti (un po' grandicello, sui 60 mb poichè ha un grande db sotto) ma non riesco a farlo funzionare. Quando clicco sulla freccia della combo box (per inserirlo sono andato su Inserisci > Controllo ActiveX > casella combinata; è corretto?) mi riporta sul vba sottolineandomi in giallo la primissima riga di codice (ovvero come dicevo prima Private Sub ComboBox1_DropButtonClick() ). Ho controllato che i nomi combaciassero, sia del controllo, che del foglio e via dicendo.. sembra che tutto corrisponda! ma ci sarà qualcosa che tralascio, e non capisco cosa, ti farei l'upload di un file casuale ma non so quanto sia efficace perchè io farei semplicemente copia ed incolla del codice che hai inserito tu all'interno delle proprietà della combo box.. ne' piu nè meno.. che cosa mi perdo?
    Ho notato che sotto alla combobox del tuo file, se la sposto, leggo il testo in una cella come se la combo box e la cella fossero collegate.... mi perdo qualcosa ?



  • di alfrimpa data: 09/05/2016 14:21:27

    Ciao Roberto bene grazie.

    Comincio dal fondo: si la casella combinata è "legata" alla cella B4 perché la macro associata al pulsante apre il file il cui nome è contenuto in B4.

    Per quanto riguarda il resto non saprei cosa dire; l'unica cosa che mi vien di consigliare è di allegare il file che ti va in errore (ovviamente senza database) e posso provare a vedere.

    Ma nella sub

    Private Sub ComboBox1_DropButtonClick()
    End Sub

    hai inserito il relativo codice? Se si che codice hai inserito?

    Alfredo





  • di pellamy88 (utente non iscritto) data: 09/05/2016 15:09:45

    Ciao Alfredo, ricreo un file ad hoc cosi ti faccio vedere che cosa succede.. Comunque il riferimento della cella non lo stavo ancora usando poichè mi ero ancora "bloccato" all'inizio, ovvero alla creazione della combo box.. ma gia li, non produce risultati purtroppo.. non so cosa sbaglio, ti allego il file comunque grazie!



  • di alfrimpa data: 09/05/2016 18:10:41

    Ciao Roberto

    Nel tuo file c'erano i seguenti errori:

    1) Il codice era in ComboBox_Change e non in ComboBox_DropButtonClick
    2) la combo che è su Sheet1 è denominata ComboBox21 ma nel codice era rimasta ComboBox1.
    3) Per far funzionare il tutto occorre salvare, chiudere e riaprire il file altrimenti l'istruzione ActiveWorkbook.Path & "" restituisce solo "" e non il percorso completo non facendoti visualizzare i file nella combo.

    Ti ho allegato il file TestRoberto.xlsm

    Alfredo





  • di pellamy88 (utente non iscritto) data: 09/05/2016 21:57:53

    Sei un grande alfredo.. ma come hai fatto a collegare la combo box alla cella b2 ? non vedo nessuna formula/codice...



  • di pellamy88 (utente non iscritto) data: 09/05/2016 22:42:06

    L'ho trovata alfredo, era una proprietà LINKEDCELL... grazie lo stesso!!! :)



  • di alfrimpa data: 09/05/2016 23:33:02

    Allora possiamo considerare questa discussione "definitivamente" risolta o mi devo attendere dei corollari?

    Alfredo





  • di pellamy88 (utente non iscritto) data: 09/05/2016 23:36:44

    Caro Alfredo, ti chiedo solo un ultima cosa. Non riesco ad adattare il codice che copia e incolla i dati da un file all'altro. Allora io vorrei:

    Copiare i dati che sono presenti all'interno del File Sorgente in colonna A (dalla seconda riga, poichè c'è l'intestazione); i dati in colonna B (idem) e colonna C (idem).

    Incollarli all'interno del file Base, tutti dalla riga numero 10 in poi, rispettivamente in : colonna A ; colonna G; colonna U.

    So che ti ho chiesto davvero troppo, ma cercando di fare delle prove cambiando il codice non ne sono venuto a capo. Cambia se ti dico che è una tabella dove devono essere incollati? Grazie alfredo , riporto il codice che dovrei modificare
     
    Sub Macro1()
    
    Dim SorgAur As Long
    Dim SorgDur As Long
    Dim BaseAur As Long
    Dim BaseDur As Long
    Dim myPath As String
    Dim cartella As String
    Dim nomefile As String
    Application.ScreenUpdating = False
    cartella = Range("F3").Value
    Range("a10:a100").ClearContents
    Range("g10:d100").ClearContents
    myPath = ActiveWorkbook.Path & ""
    nomefile = ActiveWorkbook.Name
    Workbooks.Open myPath & cartella
    Windows(cartella).Activate
    SorgAur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    SorgDur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
    Range("a1:a" & SorgAur).Copy
    Windows(nomefile).Activate
    BaseAur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    ActiveWorkbook.ActiveSheet.Range("a" & BaseAur + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Windows(cartella).Activate
    Range("b1:d" & SorgDur).Copy
    Windows(nomefile).Activate
    BaseDur = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
    ActiveWorkbook.ActiveSheet.Range("g" & BaseDur + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Windows(cartella).Activate
    ActiveWorkbook.Close
    Range("a8").Select
    Application.ScreenUpdating = True
    End Sub



  • di pellamy88 (utente non iscritto) data: 09/05/2016 23:38:42

    Ahah l'ho letto solamente dopo aver postato l'utlimo messaggio.. Alfredo fatti fare una ricarica su paypal te la meriti tutta per quanto mi hai risolto le cose !