cercare file con nome parziale
Hai un problema con Excel? 
cercare file con nome parziale
di David (utente non iscritto) data: 28/07/2017 10:56:44
Buongiorno a tutti,
ho un problema riguardante la possibilità di allegare un file in Outlook tramite pulsante e relativa macro su foglio di Excel. Se utilizzo il file attivo non ho problemi. Ma se voglio allegare il file salvato con un altro pulsante e che combina il valore di una cella ("pippo" è il valore immesso) con la data ed ora, del tipo "pippo dd-mm-yyyy_hh.ss.xls" non riesco a far partire l'azione correttamente perché non conosco l'istruzione o comando che mi dica di allegare il file "pippo*.xls". Allego la macro utilizzata. Ovviamente questo tipo di ricerca file può essere utile anche in altri frangenti, come ricercare cartelle, catalogare files ecc.
Grazie anticipatamente a tutti quanti vorranno partecipare
Sub Pulsante380_Click()
Dim appOL As New Outlook.Application
Dim creaEmail As Outlook.MailItem
Set creaEmail = appOL.CreateItem(olMailItem)
With creaEmail
.To = "picodepaperis@pluto.com"
.Subject = "Invio Offerta"
Dim p As String
Dim X As String
p = ActiveWorkbook.Path
X = Sheets(2).[B3].Value 'con X prendiamo il nome Pippo
If p & "" & X & DataOra & ".xls" = "" Then
.Attachments.Add p & "" & "CartellaAttiva.xls"
Else
.Attachments.Add p & "" & X & ??????? & ".xls"
End If
'.Save
.Display
End With
'Pulizie
Set appOL = Nothing
Set creaEmail = Nothing
End Sub |
di Vecchio Frac data: 28/07/2017 13:57:03
Potresti utilizzare Dir() per restituire il primo file che corrisponde al criterio, nella cartella desiderata.
Quindi supponendo che ci siano più file che iniziano con pippo, il comando s = Dir(ActiveWorkbook.Path & "pippo*.xls"
assegna alla variabile "s" il nome del primo file che comincia per "pippo", ha estensione "xls" e si trova nel percorso specificato da ActiveWorkbook.Path.
Nel tuo codice non è chiaro cosa sia "DataOra" (un range? una stringa? un oggetto?).
Inoltre l'istruzione If p & "" & X & DataOra & ".xls" = "" Then
è concettualmente sbagliata perchè la condizione non verrà mai verificata e darà sempre False, per cui verrà sempre eseguito quanto segue l'Else. Cioè stai dicendo a Excel: "verifica se la stringa composta da p, la barra rovescia, la X, il contenuto di DataOra (qualsiasi cosa sia) e ".xls" è uguale a una stringa vuota": il che palesemente non sarà mai vero.
di David (utente non iscritto) data: 28/07/2017 15:32:31
Ciao Vecchio Frac,
grazie per la risposta. La variabile DataOra è un refuso. Sorry. Adesso provo questa funzione e ti saprò dire qualcosa.
Saluti
David
di David (utente non iscritto) data: 28/07/2017 16:22:32
Ciao Vecchio Frac,
ho usato la funzione Dir () ma non so se la sto usando in maniera corretta. Trascrivo il codice. Mi rimanda un errore di run-time specificando che è impossibile trovare il file e di verificare che il percorso ed il nome file siano corretti. Nella cartella del file attivo si trova il file salvato che è così denominato: pippo 28-07-2017_15.36.36.xls.
Se hai qualche indicazione da darmi ti ringrazio ancora.
Saluti
David
Sub Pulsante380_Click()
Dim appOL As New Outlook.Application
Dim creaEmail As Outlook.MailItem
Set creaEmail = appOL.CreateItem(olMailItem)
With creaEmail
.To = "picodepaperis@pluto.com"
.Subject = "Invio Offerta"
Dim p As String
Dim X As String
Dim s As String
p = ActiveWorkbook.Path 'individuo il percorso del file da allegare
X = Sheets(2).[B3].Value 'con X prendiamo il nome della cella B3 del foglio 2 ad es. Pippo
s = Dir(ActiveWorkbook.Path & "" & X & " " & "*.xls") 'trova il primo nome file che inizia con Pippo
If s <> "" Then 'se la variabile s viene trovata
.Attachments.Add s 'p & "" & X & "*.xls" è l'alternativa. allega il file trovato
Else
.Attachments.Add p & "" & "Calcolo Offerta RSA-CDC.xls" 'allega il file attivo
End If
'.Save
.Display
End With
'Pulizie
Set appOL = Nothing
Set creaEmail = Nothing
End Sub |
di Vecchio Frac data: 28/07/2017 19:31:35
A prima vista non mi sembra sbagliato, ho fatto un veloce test e dovrebbe funzionare; su quale riga esattamente ti viene dato errore?
di David (utente non iscritto) data: 28/07/2017 20:55:14
Il debug mi inchioda nel ciclo if, al comando then. Sostanzialmente non riconosce s come percorso ed ora che ci penso presumo che proprio s non sia riconosciuto. Infatti non finisce neppure il ciclo if ma esce in errore. Considera che precedentemente, col salvataggio del file attivo Calcola Offerta CDC-RSA.xls senza alcun ciclo if mi apriva Outlook e mi allegata il file attivo senza problemi. Non esseno però un programmatore esperto (ho solo reminiscenze dell'università ) non riesco a capire cosa non vada. Sicuramente non ho settato bene alcuni parametri oppure non li ho usati bene. Ma non so come fare se non reimmergendomi nel vba .
Cia e grazie.
David
di Vecchio Frac data: 28/07/2017 21:49:45
Rituffarti in VBA non ti farà che bene :)
Quel .Attachments.Add s non basta perchè in "s" hai solo il nome del file trovato, non l'intero percorso, che è necessario. Cambia con:
.Attachments.Add p & "" & s
e vedrai che funziona ^_^
di David (utente non iscritto) data: 28/07/2017 22:58:38
Vecchio Frac grazie 1000. Scusa se rispondo come prima dal telefono ma ho il PC aziendale off-line e non lo collego al wifi di casa. Ho inserito la tua modifica e intanto mi davo del babao! Come pensavo il mio errore era considerare che la funzione dir () restituisse nome e percorso. Invece no. Come è giusto che sia. Comunque grazie ancora e grazie al forum che è davvero bello grazie a persone come te che aiutano gli altri. Ho spuntato " caso risolto" come è giusto che sia. Buona serata.
David
Vuoi Approfondire?