Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

incollare record selezionato da maschera continua nel costrutto di una mail in VBA

  1. #1
    ziobill non è in linea Novello
    Post
    6
    Like Inviati  
    0
    Like Ricevuti  
    0
    chiedo aiuto per quanto in oggetto specificando che nella mail creata in vba con la pressione di un pulsante, cosa che al momento non ho difficoltà a produrre, in automatico deve inserire in coda alla parte già inserita nel corpo, anche il record selezionato nella maschera.

    Cosa che oggi faccio manualmente selezionando il selettore record, pulsante destro del mouse, e copia.
    Per poi incollarlo manualmente nel corpo della mail, dove viene generata una tabella con il contenuto

    Chiedo ancora se in VBA è possibile anche selezionare tutti i selettori record in una maschera e copiare i record ne corpo della mail.

    Ne avrei altre, ma al momento mi fermo quì.

    Spero di non essermi dilungato troppo, ma cosa più importante, essere stato chiaro abbastanza
    grazie

  2. #2
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Post
    3,091
    Like Inviati  
    0
    Like Ricevuti  
    1
    Non sono sicuro di darti un suggerimento corretto fino in fondo, magari attendi una risposta più competente.
    Innanzitutto prova ad usare l'istruzione DoCmd.SendObject con tutti i suoi argomenti, leggi qui
    https://docs.microsoft.com/en-us/off...Cmd.SendObject

    Poi, effettivamente ho provato anch'io ad agire "manualmente" così:
    1. Seleziono la query che mi indica il recordset che mi serve
    2. Clicco col mouse destro e scelgo Copia
    3. Poi vado nel testo della mail e Incollo
    Funziona.
    Raccontato lo stesso in VBA...però non riesco ad aiutarti...
    ℹ️ Leggi di più su OsvaldoLaviosa ...

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,802
    Like Inviati  
    0
    Like Ricevuti  
    23
    I dettagli tecnici che fornisci sono inconsistenti...
    Ad esempio quando dici che crei la mail da VBA... cosa significa...? (Come lo fai in concreto..?)

    In VBA si può fare tutto... ma da provare proprio in relazione a come ti sei mosso.

    Ad esempio, puoi provare a fare il Copy così, ma poi non puoi fare il Paste da VBA se sei in un'applicazione esterna...
    DoCmd.RunCommand acSelectAllRecords
    DoCmd.RunCommand acCopy
    
    Quindi se serve operare in modalità Inter-Application... le cose si complicano MOLTO... anche perchè devi scrivere l'html da inserire nel Corpo...
    ℹ️ Leggi di più su @Alex ...

  4. #4
    ziobill non è in linea Novello
    Post
    6
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Ad esempio quando dici che crei la mail da VBA... cosa significa...? (Come lo fai in concreto..?)
    questo codice abbastanza sporco l'ho utilizzato qualche 4 o 5 anni fa per automatizzare un mail con allegati alla pressione di un pulsante.


    Private Sub InviaMail()
    Dim OutApp As Object
        Dim OutMail As Object
        Dim SigString, Signature As String
        Dim HTML, SQL As String
        Dim allegato As String
        SQL = "SELECT SUB_2.id_sub, verifiche.id_sub_2, verifiche.Path_Esito FROM (SUB INNER JOIN SUB_2 ON SUB.id_sub = SUB_2.id_sub) INNER JOIN verifiche ON SUB_2.ID_SUB_2 = verifiche.id_sub_2 WHERE (((SUB_2.id_sub)=[forms]![M_sub]![id_Sub])"
    
    
            Set OutApp = CreateObject("Outlook.Application")
            OutApp.Session.Logon
            Set OutMail = OutApp.CreateItem(0)
              SigString = DLookup("Folder_EmailFirma", "Servizio") 'C:\Documents and Settings\876500\Dati Applicazioni\Microsoft\Signatures\Firma 150.htm"
    
                If Dir(SigString) <> "" Then
                    Signature = GetBoiler(SigString)
                Else
                    Signature = ""
                End If
    
            On Error Resume Next
            'With OutMail
                OutMail.To = DLookup("[Email]", "Strutture", "[id_struttura] = " & [id_Struttura]) 'Forms!M_POL_TRATT!EmailDL
                OutMail.CC = DLookup("emailCapo", "Strutture", "[id_struttura] = " & [id_Struttura]) 'Forms!M_POL_TRATT!EmailRP & "; " & Forms!M_POL_TRATT!EmailPM
                OutMail.BCC = ""
                OutMail.Subject = "CO 344/RFI del 29 Febbraio 2016 - Trasmissione Verifiche Effettuate - SubaAppalto: N° S" & [Sub]
                OutMail.bodyformat = olFormatHTML
                
                HTML = "<html><head></head><body><br>la presente E-Mail è generata in maniera automatica" & "<br>"
    
                HTML = "<html><head></head><body> Questa E-mail è generata in automatico.<br>buongiorno,<br> in relazione a quanto stabilito dalla C.O. 334/RFI del 29 Febbraio 2016 Punto II.7 'Documentazione per alimentazione Banca Dati Appalti e Subappalti del Gruppo FS', in allegato, si trasmette la documentazione relativa al SubAppalto in oggetto, strutturato come segue:<br>" & "<br>" & "<b>- Appaltatore:</b> " & DLookup("denominazione", "ditte", "id_ditta= " & id_Appaltatore) & "<br>"
    '**************
                   'HTML = HTML & "<b>- Subappalto:</b> " & DLookup("denominazione", "ditte", "id_ditta= " & id_Appaltatore) & ".<br>la documentazione trasmessa è relativa all'Appaltatore:" & "<br>"
                If Associazione Then
                    HTML = HTML & "<b>- Subappaltatore:</b> " & DLookup("denominazione", "ditte", "id_ditta= " & id_Ditta) & ".<br>la documentazione trasmessa è relativa alle Imprese:" & "<br>"
                Else
                    HTML = HTML & "<b>- Subappaltatore:</b> "
                End If
    
    '*************************************
            Dim RTT As DAO.Recordset
            Set dbs = CurrentDb
            Set RTT = dbs.OpenRecordset("SELECT SUB_2.id_sub, Ditte.Denominazione FROM SUB_2 INNER JOIN Ditte ON SUB_2.id_Ditta = Ditte.id_Ditta WHERE SUB_2.id_sub= " & [Forms]![M_Sub]![id_sub] & ";")
                    RTT.MoveFirst
                    Do While Not RTT.EOF
                        Debug.Print RTT!id_sub
                        HTML = HTML & "- " & RTT!Denominazione & "<br>"
    
                    RTT.MoveNext
                    Loop
                    
    
    
                Set RTT = Nothing
                Set dbs = Nothing
                '****************************************
                
                OutMail.HTMLbody = HTML & "" & "<br>Saluti Cordiali<br>" & "<br></body></html>" & Signature
                'OutMail.body = " Prova scrittura messaggio NON HTML" & Signature
                
                'OutMail.Attachments.Add "" & Path_word
                Dim pippo As String
             '   If InviaAttestazioneAssociazione And pdf1 Then
             '       pippo = "" & DLookup("Foldersub_attetsazioneATI", "servizio") & Path_attetstazione_Associazione
             '       OutMail.Attachments.Add (pippo)
             '   End If
             '   If InviaRichiesta And pdf2 Then
             '       pippo = "" & DLookup("Foldersub_richiesta", "servizio") & Path_Richiesta
             '       OutMail.Attachments.Add (pippo)
             '   End If
             '   If InviaSubcontratto And pdf3 Then
             '       pippo = "" & DLookup("Foldersub_subcontratto", "servizio") & Path_SubContratto
             '       OutMail.Attachments.Add (pippo)
             '   End If
             '   If InviaRelazioneCEL And pdf4 Then
             '       pippo = "" & DLookup("Foldersub_relazionecel", "servizio") & Path_Relazione_CEL
             '       OutMail.Attachments.Add (pippo)
             '   End If
             '   If InviaRelazioneDL And pdf5 Then
             '       pippo = "" & DLookup("Foldersub_relazionedl", "servizio") & Path_Relazione_DL
             '       OutMail.Attachments.Add (pippo)
             '   End If
                'If InviaAutorizzazione And pdf6 Then
            '        pippo = "" & DLookup("Foldersub_autorizzazione", "servizio") & Path_Autorizzazione
            '        OutMail.Attachments.Add (pippo)
            '    End If
            Dim RSTT As DAO.Recordset
            Set dbs = CurrentDb
            Set RSTT = dbs.OpenRecordset("SELECT SUB_2.id_sub, verifiche.id_sub_2,  verifiche.Path_esito FROM (SUB INNER JOIN SUB_2 ON SUB.id_sub = SUB_2.id_sub) INNER JOIN Verifiche ON SUB_2.ID_SUB_2 = verifiche.id_sub_2 WHERE SUB_2.id_sub= " & [Forms]![M_Sub]![id_sub] & ";")
                    RSTT.MoveFirst
                    Do While Not RSTT.EOF
                        Debug.Print RSTT!ID_SUB_2
                        pippo = RSTT!Path_Esito
                        If ReportFileStatus(pippo) Then
                            OutMail.Attachments.Add "" & RSTT!Path_Esito
                        Else
                            'MsgBox " Non tutti i file da Trasmettere sono stati allegati; Controlla e ripeti l'operazione"
                        'GoTo salta
                         End If
                    RSTT.MoveNext
                    Loop
                    'Aggiunge Lettera di Trasmissione alla Mail
                    pippo = Forms!M_Sub!Path_TrasmissioneEsito
                    If ReportFileStatus(pippo) Then
                            OutMail.Attachments.Add "" & pippo
                    End If
                    '=====
                Set RSTT = Nothing
                Set dbs = Nothing
    
                OutMail.Display
                '.Send questo serve per inviarle senza visualizzarle
                '.Save Per SAlvare Il messaggio in bozze
                
                'application.sendkeys "%a" questa parte se decommentata serve a non ricevere la finestrella di Outlook che chiede di autorizzare l'invio
    
    salta:
            'End With
            On Error GoTo 0
    
            Set OutMail = Nothing
            Set OutApp = Nothing
    
        'Riferimento = "Inviato tramite E-Mail"
        DataRiferimento = Date
    End Sub
    
    
    Function GetBoiler(ByVal sFile As String) As String
    'Dick Kusleika
        Dim fso As Object
        Dim ts As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
        GetBoiler = ts.readall
        ts.Close
    End Function
    

    Alex, potrebbe esserci qualcosa di tuo in questo codice
    Ultima modifica di ziobill; 11-02-2021 21:15 

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,802
    Like Inviati  
    0
    Like Ricevuti  
    23
    Ho scritto un po di cose in 25 anni di presenza con access ;-) ma non ricordo tutto.
    In ogni caso per creare una tabella devi rispettare i tags html mentre cicli il recordset ed all'interno i fields.
    Quindi nella sostanza fai 2 cicli uno nell'altro e componi la stringa con i tags.
    Qui trovi un esempio della struttura che dovrai ricostruire.
    https://www.tutorialspoint.com/How-t...tables-in-HTML
    Sai che il tag TR definisce un table Row ed il tag TD il table cellulare.
    Dal momento che vuoi tutti i records ti basta sfruttare il recordsetclone di form
    Dim sHTML  AS string
    Dim fld. As Dao.Field
    Me.Recordsetclone.MoveFirst 
    
    SHtml="<Table>"
    Do utile Me.Recordsetclone.eof
        SHtml=shtml & "<tr>"
        For each fld in Me.Recordsetclone
            Shtml=shtml & "<td>" & fld.value & "</td>"
        Next
        sHtml=sHtml & "</tr>"
        Me.Recordsetclone.movenext
    Loop
    sHtml=sHtml & "</table>"
    
    È parecchio che non uso html quindi sono andato a braccio... ed ovviamente devi leggere bene come usare I tags correttamente e verificare bene la logica abbozzata del loop... concettualmente è corretta. ;-)

    Spero sia utile.
    ℹ️ Leggi di più su @Alex ...

  6. #6
    ziobill non è in linea Novello
    Post
    6
    Like Inviati  
    0
    Like Ricevuti  
    0
    Grazie Alex,
    utilizzo Access unicamente nel mio lavoro per informatizzare tutte le mie attività.
    Ho iniziato con DB3, poi passato ad access dalle prime versioni.
    ho quasi 60 anni ed ogni tanto, visto che non utilizzo il codice tutti i giorni, ho bisogni di lubrificarmi.

    Ti aggiorno, appena il lavoro mi permette di dedicarmi alla questione.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 10-02-2021, 23:24
  2. Problema evidenziazione record selezionato in maschera continua
    Da RaoulDuke nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 05-12-2020, 15:07
  3. Risposte: 5
    Ultimo Post: 05-06-2019, 22:26
  4. Ordinamento record maschera continua e posizione nuovo record
    Da Rinaldino23 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 16-08-2017, 10:08
  5. Risposte: 5
    Ultimo Post: 31-01-2015, 10:33