Non ho piu' risposto perche' vale ancora quanto scritto nel primo messaggio: Tutte le cose che dici si possono fare col vba, partendo dall'estrazione degli allegati delle mail [. . . ], creando un eventuale dizionario N° Prodotto/Progetto <--> Nome documento e infine scegliendo il file da utilizzare nella sessione corrente.
Commentare se e' meglio usare un pulsante messo in alto o un hyperlink messo in basso non me la sento: dipende da quanta automazioni vuoi realizzare, da quanta libertà vuoi lasciare agli utenti, dalla loro preparazione e da 10 altre cose che solo tu conosci.
Ma io torno a battere il solito tasto: lavori per migliorare un processo produttivo, hai abbastanza idee, devi battere i piedi per avere un programmatore a tua disposizione; perche' altrimenti prima o poi qualcosa andrà storto (è solo questione di tempo, purtroppo) e partirà la caccia al colpevole, e non si guarderà a quanto bella avrebbe potuto essere la soluzione ma a quanto e' brutto Sheets("Foglio2").Select /Range("A2").Select /Sheets("Foglio3").Select /Range("A" & LastR).PasteSpecial
Non volendo abbandonarti ti do qualche "buon consiglio":
A) non rinominare i file pdf, altrimenti non riuscirai piu' a tracciarne l'origine e il percorso; crea invece una tabella con le associazioni che ti interessa fare fare (es: N° Pratica /Nome file corrispondente
B)non usare collegamento hypetrext per aprire un file, che comporta sempre problemi di sicurezza che non so come il pc andra' a gestire. Puoi comandare l'apertura di un file tramite la sua default application con comando come questo:
- Codice: Seleziona tutto
'Dichiarazione in testa al modulo vba:
#If VBA7 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
'codice all'interno della macro:
strFileName = "C:\Percorso\NomeFile.pdf"
myPid = ShellExecute(vbNull, "Open", strFileName, "", "", vbMaximizedFocus)
C) se impari a gestire il combobox (vedi altra discussione) automaticamente impari come da un lungo elenco puoi estrarre la voce di tuo interesse
Ciao