Importare dati da un altro file con macro
Hai un problema con Excel?
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 !
Vuoi Approfondire?