Allegare file che abbia nel nome un determinato testo

di il
16 risposte

Allegare file che abbia nel nome un determinato testo

Buongiorno,
ho una macro in VBA che mi consente di inviare una mail e di allegare determinati file.
Private Sub Comando167_Click()

Dim destinatario As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
 .To = Forms![MSC stato 2]![Sottomaschera ELENCOCOLLABORATORI].Form![Email]
 'CC =
 .Subject = "INVIO: CONTRATTI - DISPOSIZIONI E TEG " & Forms![MSC stato 2]![SOCIO] & ""
 .Body = "Gentile," & Forms![MSC stato 2]![Sottomaschera ELENCOCOLLABORATORI].Form![NOMEPROM] & "" & vbNewLine & "Si inviano in allegato:" & vbNewLine & "1)CONTRATTI" & vbNewLine & "2)DISPOSIZIONI" & vbNewLine & "3)TEG" & vbNewLine & "del socio indicato in oggetto"
.Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\" & Forms![MSC stato 2]![SOCIO] & "  " * ".pdf")
 '.Send 'per inviare subito la mail
 .Display 'per aprire e controllare la mail prima di inviarla manualmente
 End With

Set OutMail = Nothing
 Set OutApp = Nothing


End Sub
Funziona tutto tranne un comando che non capisco come dargli.
Nel codice sopra gli sto dicendo di allegarmi un file nella cartella specifica che abbia il nome del campo [SOCIO] presente nella maschera STATO 2.

Se dovesse funzionare per soltanto un file ok ma se io volessi fare in modo che mi allegasse TUTTI I FILE CHE NEL NOME ABBIANO IL NOME SOCIO + una parte variabile.
Esempio di nome di file:
ALESSANDRO VITALE MUTUO 100000.pdf
ALESSANDRO VITALE FACOLTA DI SCOPERTO 50000.pdf

vorrei che me li allegasse entrambi.

Ho provato a mettere l'asterisco ma mi manda a quel paese.
Avete consigli?
Nella guida al VBA non ho trovato nulla (ma sicuramente non so cercare tra tutte le moltitudini di comandi.

16 Risposte

  • Re: Allegare file che abbia nel nome un determinato testo

    Devi ottenere la lista dei file che hanno quella caratteristica nel nome. Cerca e studia la funzione Dir()
  • Re: Allegare file che abbia nel nome un determinato testo

    Vi sembra corretta?
    se si, come la integro nel codice del primo post?
    Dim p As String
     Dim X As String
     Dim s As String
     
     p = “\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\” 'individuo il percorso del file da allegare
     X = Forms![MSC stato 2]![SOCIO].Value 'con X prendiamo il nome del campo SOCIO ad es. Pippo
     s = Dir(ActiveWorkbook.Path & "" & X & " " & "*.pdf") 'trova il primo nome file che inizia con Pippo
        .Attachments.Add s       'p & "" & X & "*.pdf"
    
  • Re: Allegare file che abbia nel nome un determinato testo

    alessandro.vitale ha scritto:


    Vi sembra corretta?
    se si, come la integro nel codice del primo post?
    Dim p As String
     Dim X As String
     Dim s As String
     
     p = “\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\” 'individuo il percorso del file da allegare
     X = Forms![MSC stato 2]![SOCIO].Value 'con X prendiamo il nome del campo SOCIO ad es. Pippo
     s = Dir(ActiveWorkbook.Path & "" & X & " " & "*.pdf") 'trova il primo nome file che inizia con Pippo
        .Attachments.Add s       'p & "" & X & "*.pdf"
    
    Ti genera errori...? Quali...?
  • Re: Allegare file che abbia nel nome un determinato testo

    Il mio codice per intero è questo:
    Private Sub Comando167_Click()
    
    Dim destinatario As String
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    With OutMail
     .To = Forms![MSC stato 2]![Sottomaschera ELENCOCOLLABORATORI].Form![Email]
     'CC =
     .Subject = "INVIO: CONTRATTI - DISPOSIZIONI E TEG " & Forms![MSC stato 2]![SOCIO] & ""
     .Body = "Gentile," & Forms![MSC stato 2]![Sottomaschera ELENCOCOLLABORATORI].Form![NOMEPROM] & "" & vbNewLine & "Si inviano in allegato:" & vbNewLine & "1)CONTRATTI" & vbNewLine & "2)DISPOSIZIONI" & vbNewLine & "3)TEG" & vbNewLine & "del socio indicato in oggetto"
    .Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\CONTRATTI FIRMATI\" & Forms![MSC stato 2]![INTEST] & " - CREDIMPRESA.pdf")
    .Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\CONTRATTI FIRMATI\" & Forms![MSC stato 2]![INTEST] & " - SOCIO.pdf")
    .Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO CONTRIBUTI\AlessandrO\LETTERE TEG\TEG " & Forms![MSC stato 2]![INTEST] & ".pdf")
    'Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\" & Forms![MSC stato 2]![SOCIO] & "  " * ".pdf")
     '.Send 'per inviare subito la mail
     .Display 'per aprire e controllare la mail prima di inviarla manualmente
     End With
    
    Set OutMail = Nothing
     Set OutApp = Nothing
    
    
    End Sub
    devo integrare il codice della funzione DIR nell'ultima riga degli allegati e proverei così:
    Private Sub Comando167_Click()
    
    Dim destinatario As String
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    With OutMail
     .To = Forms![MSC stato 2]![Sottomaschera ELENCOCOLLABORATORI].Form![Email]
     'CC =
     .Subject = "INVIO: CONTRATTI - DISPOSIZIONI E TEG " & Forms![MSC stato 2]![SOCIO] & ""
     .Body = "Gentile," & Forms![MSC stato 2]![Sottomaschera ELENCOCOLLABORATORI].Form![NOMEPROM] & "" & vbNewLine & "Si inviano in allegato:" & vbNewLine & "1)CONTRATTI" & vbNewLine & "2)DISPOSIZIONI" & vbNewLine & "3)TEG" & vbNewLine & "del socio indicato in oggetto"
    .Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\CONTRATTI FIRMATI\" & Forms![MSC stato 2]![INTEST] & " - CREDIMPRESA.pdf")
    .Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\CONTRATTI FIRMATI\" & Forms![MSC stato 2]![INTEST] & " - SOCIO.pdf")
    .Attachments.Add ("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO CONTRIBUTI\AlessandrO\LETTERE TEG\TEG " & Forms![MSC stato 2]![INTEST] & ".pdf")
    Dim p As String
     Dim X As String
     Dim s As String
     
     p = “\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\” 'individuo il percorso del file da allegare
     X = Forms![MSC stato 2]![SOCIO].Value 'con X prendiamo il nome del campo SOCIO ad es. Pippo
     s = Dir(ActiveWorkbook.Path & "" & X & " " & "*.pdf") 'trova il primo nome file che inizia con Pippo
        .Attachments.Add s       'p & "" & X & "*.pdf"
     '.Send 'per inviare subito la mail
     .Display 'per aprire e controllare la mail prima di inviarla manualmente
     End With
    
    Set OutMail = Nothing
     Set OutApp = Nothing
    
    
    End Sub
  • Re: Allegare file che abbia nel nome un determinato testo

    Questo lo abbiamo capito ma Alex ti ha chiesto se hai errori o malfunzionamenti.

    Hai letto la parte della Dir completamente nel manuale?
  • Re: Allegare file che abbia nel nome un determinato testo

    Mi da errore 424 su questa parte :
    s = Dir(ActiveWorkbook.Path & "" & X & " " & "*.pdf") 
    Ho letto la parte dir del manuale.. si
  • Re: Allegare file che abbia nel nome un determinato testo

    ActiveWorkbook.Path

    ha a che fare con Excel non con Access

    e poi quello che hai scritto tra parentesi non è ben formato ...
  • Re: Allegare file che abbia nel nome un determinato testo

    Si hai ragione
    mi ero accorto dopo della presenza di active…

    ora mi da errore nel percorso:
     s = Dir("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\" & " & X &  " & "*.pdf")
    Tenendo conto che un esempio di nome file è:
    LI CANDRO GIOVANNI MUTUO CHIROGRAFARIO 10000.pdf
    dove LI CANDO GIOVANNI è il testo "FISSO"
    quindi

    \\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\LI CANDRO GIOVANNI *.pdf
    traducendolo..
    corretto? NElla stringa sopra ho la sensazione che come dici tu sia "formato" male il percorso.
  • Re: Allegare file che abbia nel nome un determinato testo

    Se vuoi imparare, mostra i vari pezzi che vuoi unire uno sotto l'altro separati da &
  • Re: Allegare file che abbia nel nome un determinato testo

    Scusa ma non capisco cosa intendi per "Vari Pezzi".
    I pezzi, per come ho incollato il percorso che mi da errore sono 4 e cioè:
    1)Percorso Cartella (e su quello non ci sono dubbi della correttezza);
    2) "X" e cioè il NOME SOCIO;
    3) * e cioè qualsiasi cosa ci sia scritta dopo il nome socio NON HA IMPORTANZA
    4) .pdf (prendimi solo i pdf)

    Non mi manca nulla da aggiungere.
    nell astringa del percorso con la definizione anche del nome del file con * mi perdo tra le & e le " però credo di averla scritta con tutti i crismi.
  • Re: Allegare file che abbia nel nome un determinato testo

    Ok ma le " sono messe a casaccio
  • Re: Allegare file che abbia nel nome un determinato testo

    Questo mi lega il percorso alla & successiva
    Dir("\\SERVERHP\Documenti\ServCredimpresa\UFFICIO FIDI\Alessandra\Disposizioni\2018\" &
    Questo mi lega il nome del SOCIO al percorso
    " & X &  "
    Questo mi lega il "prenditi qualsiasi file che abbia almeno il nome socio nel nome file purchè sia in pdf" al nome socio precedente
    & "*.pdf")
    Il primo pezzo è corretto apro e chiudo con le" e lego con &.
    Il secondo pare sia anche lui corretto perché Le virgolette sono aperte e chiuse e lego la X sia a destra che a sinistra
    Il terzo pezzo sembra che leghi *.pdf al pezzo precedente del percorso.

    Non trovo l'errore nelle "
  • Re: Allegare file che abbia nel nome un determinato testo

    No

    " & X & "

    non tra "

    X è una variabile
  • Re: Allegare file che abbia nel nome un determinato testo

    No non è affatto giusto... le virgolette delimitano una stringa, che poi concateni con [&], ma tu nel mezzo non hai una stringa ma una Variabile, quindi come le hai messe è sbagliato.
Devi accedere o registrarti per scrivere nel forum
16 risposte