riferimenti dinamici alle Tabelle
Hai un problema con Excel? 
riferimenti dinamici alle Tabelle
di Silvio (utente non iscritto) data: 02/01/2017 15:48:12
Premetto che sono nuovo del mondo VBA e che sono autodidatta. Il mio problema è il seguente. Tramite una userform scelgo un file excel dal quale poi seleziono una delle tabelle contenute al suo interno che mi servirà per creare in automatico alcune e-mail da inviare.
All'interno della userform posso anche selezionare le colonne della tabella che ho individuato in precedenza per crearmi il nome del file pdf da allegare alla e-mail.
Quando seleziono la tabella il suo nome viene assegnato alla variabile NOME_TABELLA. Successivamente seleziono il campo allegato in cui dovrò inserire il nome del file da allegare alla e-mail e verrà assegnato alla variabile CAMPO_ALLEGATO. Io devo eseguire le due istruzioni riportate nel codice vba allegato in modo tale che non sia riportato il nome del campo allegato ma la variabile CAMPO_ALLEGATO. La stessa cosa devo fare nella seconda riga dove non devo inserire NOME_BREVE e PROT_USCITA che sono i nomi di due colonne della tabella ma voglio che siano richiamate le due variabili CAMP1 e CAMP2 che scelgo con la UserForm. COme posso modificare le due righe che ho postato?
Grazie
Range("ALLEGATO").Select
ActiveCell.FormulaR1C1 = Concatenate([@["NOME_BREVE]],[@[PROT_USICTA]],"".pdf"")" |
di alfrimpa data: 02/01/2017 16:24:42
Ciao Silvio
Per avere una qualche probabilità di risposta in più ti consiglio di allegare un tuo file di esempio (strutturalmente uguale all'originale) con userform e macro.
Personalmente, però, dello strumento tabella ne so poco o nulla.
Alfredo
di Silvio (utente non iscritto) data: 03/01/2017 11:51:59
Grazie del consiglio Alfredo. Purtroppo il mio file è lunghissimo. Io semplicemente vorrei sapere come usare i due comandi che ho già postato sapendo che i nomi tra "" sono le colonne di una tabella e la tabella potrebbe essere variabile in base alla scelta effettuata tramite UserForm. Io vorrei evitare di dover inserire di volta in volta nel codice della macro i nomi delle colonne della tabella. Io sono in grado di modificare il codice vba ma la procedura la deve poter usare anche chi non sa nulla di vba.
di patel data: 03/01/2017 12:33:28
infatti non ti hanno chiesto il tuo file originale, ma un esempio con pochi dati
di Silvio (utente non iscritto) data: 05/01/2017 08:20:17
Ecco l'esempio. La prima istruzione mi seleziona la colonna ALLEGATO nella Tabella 1. Quello che devo fare io è rendere l'istruzione generica ovvero utilizzare le variabili che vengono inizializzate tramite la UserForm.
Il nome della tabella viene assegnato alla variabile Nometabella e il nome della colonna contenente il nome dell'allegato viene assegnato alla variabile NomeColonnaAllegato.
La seconda istruzione serve ad aggiornare la colonna ALLEGATO della Tabella1 costruendo il nome dell'allegato secondo la scelta effettuata nella UserForm. Pertanto @[PROT_ENTRATA] e @[NOME_BREVE] devono essere sostituiti dalle variabili CAMPO1 e CAMPO2 inizializzate tramite la UserForm.
Spero di essere stato chiaro questa volta
Sub AggiornaColonnaAllegati()
Range("Tabella1[ALLEGATO]").Select
ActiveCell.FormulaR1C1 = _
"=CONCATENATE(""Lettera_"",[@[PROT_ENTRATA]],""_"",[@[NOME_BREVE]],"".pdf"")"
End Sub
|
di Luca73 data: 05/01/2017 08:37:15
Ciao Silvio ti ribadisco cio che ti hanno scritto in precedenza patel e Alfredo:
allega un file che riproduca almeno le strutture dei fogli e delle tabelle.
Al momento dse volessi capire qual'è il probloema dovrei crearmi una tabella con dei campi come i tuoi, provare a popolarla e poi risponderti.
Se vuoi una risposta fai in modo che chi cerca di aiutarti sia messo in grado di farlo con il minimo sforzo.
di Silvio (utente non iscritto) data: 05/01/2017 10:00:15
Non posso allegare alcun file. Non sono registrato al forum. La mia domanda è generale e deve valere per qualsiasi tabella anche con solo 3 colonne e una riga. Nel mia macro non devo mettere una specifica tabella con delle specifiche colonne ma i valori sono determinati da quello che viene scelto mediante la UserForm! In caso chi fosse in grado di risolvere il problema mi contatti alla seguente e-mail:s_depaoli@libero.it
di patel data: 05/01/2017 10:12:26
La tua domanda non è banale, quindi occorre fare delle prove e questo ti è stato detto.
il forum accetta file anche da utenti non registrati, se non vuoi allegare il file è inutile continuare la discussione che si è protratta anche troppo inutilmente.
il pulsante per allegare è accanto a quello per rispondere
di Silvio (utente non iscritto) data: 05/01/2017 12:50:38
Mi scuso ma sono nuovo del forum e mi era sfuggita la possibilità di allegare file.
Eccoti accontentato Patel. Allego il file.
di Silvio (utente non iscritto) data: 05/01/2017 13:02:49
Il risultato che vorrei io è una cosa tipo il codice VBA qui sotto riportato. Purtroppo le istruzioni così come le ho scritte io non sono corrette
Sub Macro2()
Dim NomeTabella, Campo1, Campo2 As String
NomeTabella = "Tabella1"
NomeColonnaAllegato = "ALLEGATO"
Campo1 = "NOME_BREVE"
Campo2 = "PROT_ENTRATA"
Range(NomeTabella[NomeColonnaAllegato]").Select
ActiveCell.FormulaR1C1 = _
"=CONCATENATE(""Lettera_"",[@[Campo1]],""_"",[@[Campo2]],"".pdf"")"
End Sub
|
di Luca73 data: 05/01/2017 13:20:25
Ciao
con il file sotto mano è banale aiutarti.
La prossima volta cancella tutti i dati reali e metti dei dati farlocchi anche del tipo "aaaa" "bbbb"...
La soluzione dovrebbe essere quella sotto riportata.
Consiglio: se non ti serve per il debug evita la selezione delle celle, non serve
.Formula vuole dopo una stringa. una stringa è rinchiusa tra virgolette ("). se devi interrompere la stringa devi fare così:
"testostringa1" & Variabile & "testostringa2"
Il problema che complicava il tutto è che all'interno della tua stringa in excel c'erano delle virgolette in questo caso in VBA si usa il due volte le virgolette ("") .
Ciao
Luca
Range(NomeTabella & "[" & NomeColonnaAllegato & "]").FormulaR1C1 = _
"=CONCATENATE(""Lettera_"",[@[" & Campo1 & "]],""_"",[@[" & Campo2 & "]],"".pdf"")"
|
di patel data: 05/01/2017 14:18:48
cit.
Eccoti accontentato Patel. Allego il file.
.................
penso che tu abbia accontentato te stesso, non me, il problema era tuo.
Vuoi Approfondire?