Sviluppare funzionalita su Microsoft Office con VBA Salva file con Nome (dati presi da celle diverse) sia in excel che PDF

Login Registrati
Stai vedendo 18 articoli - dal 51 a 68 (di 68 totali)
  • Autore
    Articoli
  • #36496 Score: 0 | Risposta

    FROST220684
    Partecipante

      ok assodato che mi serve l'html per emulare sottolineature e grassetti niente di piu. avrei trovato un sito che sviluppa il codice html che sarebbe questo: ma naturalmente sto trovando difficoltà nell'inserirlo nel codice. insomma ho praticamente finito il file ma sta cosa non mi riesce. consigli? testo html in allegato

      Allegati:
      You must be logged in to view attached files.
      #36498 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Ero sicuro che per una presentazione professionale ti serviva la formattazione del testo, sapevo che volevi l'approfondimento 🙂

        Rimane valido il consiglio di scrivere il testo html in una cella e poi prelevarne il contenuto per affidarlo alla proprietà .HTMLBody (in un mio progetto ho creato nna casella di testo in cui ho inserito il codice html, la sostanza non cambia affatto, ti consiglio una cella perchè è più semplice prelevarne il contenuto).

        #36499 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          In pratica è il mio consiglio numero 3 del post precedente solo che assegni il contenuto della cella a .HTMLBody invece che .TextBody.

          Prendi quindi tutto il tuo codice html e lo metti (poniamo) nella cella N50 del foglio Input, poi nel codice che prepara la mail lo assegni alla proprietà giusta:

          .HTMLBody = wb1.Worksheets("Input").Range("N50").Value
          #36500 Score: 0 | Risposta

          FROST220684
          Partecipante

            vecchio frac ha scritto:

            Prendi quindi tutto il tuo codice html e lo metti (poniamo) nella cella N50 del foglio Input, poi nel codice che prepara la mail lo assegni alla proprietà giusta:

            .HTMLBody = wb1.Worksheets("Input").Range("N50").Value

            ok allora funziona. pero devo togliere wb1.

            ora che ho inviato l'email mi sono accorto di 2 cose penso semplici:

            il mittente deve avere un nome standard tipo: Fabrizio

            e poi serve la firma automatica che utilizza gmail

            #36501 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              FROST220684 ha scritto:

              pero devo togliere wb1.

              Ma il testo lo metti nel file principale no? non era stato referenziato come wb1?

              Il nome mittente lo puoi mettere nel campo .From con l'indirizzo originale tra parentesi angolari:

              .From = "Fabrizio <mail@gmail.com>"

              La firma la devi inserire nel testo html. Crea una mail vuota con la firma, poi copiala in fondo al HTMLBody formattandola opportunamente.

              #36502 Score: 0 | Risposta

              FROST220684
              Partecipante

                ok funziona tutto. ultima cosa e penso di aver finito. accanto al nome del mittente in gmail compare un logo è possibile riprodurlo? allego

                Allegati:
                You must be logged in to view attached files.
                #36504 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  Naturalmente intendi nel corpo della mail, non nel nome che finisce nel campo del mittente 🙂
                  Sì credo che sia possibile. Non l'ho mai fatto nei miei progetti perchè non mi serve (avendo solo destinatari interni all'Azienda), ma credo che si tratti solo di impostare un tag img src.

                  Mi informerò appena rientro in ufficio (sono in pausa pranzo) ma se nel frattempo qualcuno sta leggendo e conosce la risposta, può offrirla (questa non è una conversazione privata anche se sembra 🙂

                   

                  #36505 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    FROST220684 ha scritto:

                    accanto al nome del mittente in gmail compare un logo

                    Se ti riferisci all'immagine che compare quando mandi un messaggio, se il codice invia la mail da un indirizzo di posta gmail, dovrebbe inserire l'immagine associata all'account gmail mittente. Non ti resta che fare qualche prova 🙂

                    #36506 Score: 0 | Risposta

                    FROST220684
                    Partecipante

                      provo e ti aggiorno per ora ho fatto prove solo con email personale. grazieeeeee

                      #36507 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        FROST220684 ha scritto:

                        ti aggiorno

                        Sì, ci tengo a sapere come finisce. Finora mi sembra che abbiamo raggiunto un buon risultato dal momento che hai scritto:

                        FROST220684 ha scritto:

                        ok funziona tutto

                        #36508 Score: 0 | Risposta

                        FROST220684
                        Partecipante

                          ottimi risultati. ho tolto molto lavoro di mezzo o meglio ne faccio di più in meno tempo. grazie tante e ti aggiorno.

                          #36509 Score: 0 | Risposta

                          vecchio frac
                          Senior Moderator
                            272 pts

                            FROST220684 ha scritto:

                            ne faccio di più in meno tempo

                            Ci sono aspetti positivi:   
                            fatti dare un aumento di stipendio da tuo Capo o, se il Capo sei tu, concedi l'aumento di stipendio ai tuoi collaboratori perché saranno più produttivi  

                            #36517 Score: 0 | Risposta

                            FROST220684
                            Partecipante

                              ciao vecchio frac,

                              scusa ma in questi giorni sono stato un po' impicciato.

                              Ti ringrazio di tutto il file lavora correttamente in tutte le sue parti e davvero senza il tuo aiuto non avrei saputo dove sbattere la testa.

                              Grazie ancora

                              #36518 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                Bene! Grazie del feedback.

                                #36544 Score: 0 | Risposta

                                FROST220684
                                Partecipante

                                  vecchio frac ha scritto:

                                  'Set All Email Properties With NewMail .From = "Nome Cognome <la_tua_email@dominio.it>" ' fa apaprire Nome e Cognome nella mail .To = Worksheets("Input").Range("B5").Value .CC = "" .BCC = "la_tua_email@dominio.it" ' invia una copia a me stesso per tener traccia della mail inviata

                                  vecchio frac ancora una mano in questa regola:

                                  .To = Worksheets("Input").Range("B5").Value

                                  se volessi inviare email ad una colonna filtrata ad es. Colonna B che contiene più righe ma che sono state filtrate in base ad alcuni criteri. insomma di tutti gli indirizzi presenti nella colonna B deve inviare email solo a quelli risultanti dal filtro

                                  ti allego il codice vba funzionante eliminando alcune info sensibili

                                  Option Explicit
                                  
                                  'For Early Binding, enable Tools > References > Microsoft CDO for Windows 2000 Library
                                  Sub SendEmailUsingGmailStandard()
                                      Dim NewMail As Object
                                      Dim mailConfig As Object
                                      Dim fields As Variant
                                      Dim msConfigURL As String
                                  
                                      'late binding
                                      Set NewMail = CreateObject("CDO.Message")
                                      Set mailConfig = CreateObject("CDO.Configuration")
                                  
                                      ' load all default configurations
                                      mailConfig.Load -1
                                  
                                      Set fields = mailConfig.fields
                                  
                                      'Set All Email Properties
                                      With NewMail
                                          .From = ""       
                                          .To = Worksheets("Input").Range("B5").Value
                                          .CC = ""
                                          .BCC = "" ' destinatario nascosto - gmail non salva in posta inviata quindi bisogna trovare un modo per salvare il messaggio inviato
                                          .Subject = ""
                                          .HTMLBody = Worksheets("Modelli").Range("A2") ' regola per corpo mail html da prendere da cella e foglio
                                          .AddAttachment Worksheets("Input").Range("N45").Value 'regola per prendere allegato dal percorso salvato in cella N45
                                      End With
                                  
                                      msConfigURL = "http://schemas.microsoft.com/cdo/configuration"
                                  
                                      With fields
                                          .Item(msConfigURL & "/smtpusessl") = True             'Enable SSL Authentication
                                          .Item(msConfigURL & "/smtpauthenticate") = 1          'SMTP authentication Enabled
                                          .Item(msConfigURL & "/smtpserver") = "smtp.gmail.com" 'Set the SMTP server details
                                          .Item(msConfigURL & "/smtpserverport") = 465          'Set the SMTP port Details
                                          .Item(msConfigURL & "/sendusing") = 2                 'Send using default setting
                                          .Item(msConfigURL & "/sendusername") = "" 'Your gmail address
                                          .Item(msConfigURL & "/sendpassword") = "" ' password generata da gmail per app terzi
                                          .Update                                               'Update the configuration fields
                                      End With
                                      NewMail.Configuration = mailConfig
                                      NewMail.Send
                                      
                                      End Sub
                                      
                                  
                                  
                                  

                                  grazie mille per l'aiuto

                                  #36551 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    FROST220684 ha scritto:

                                    insomma di tutti gli indirizzi presenti nella colonna B deve inviare email solo a quelli risultanti dal filtro

                                    Ho capito, ti devi interessare sul metodo SpecialCells dell'oggetto Range(B:B), il quale può evidenziare le sole celle visibili di un intervallo filtrato. Prova a dare un'occhiata alla guida o in Google, poi stasera se riesco sarò più dettagliato. Adesso non posso, purtroppo ho un lavoro lungo da finire 🙂

                                    #36552 Score: 0 | Risposta

                                    FROST220684
                                    Partecipante

                                      Tranquillo ci mancherebbe. Do un occhiata tu quando puoi se riesci mi aiuti anche sull'altro post non riesco a capire l'errore sull'aggiornamento da dove viene

                                      Grazie ancora

                                       

                                       

                                       

                                       

                                       

                                       

                                      #36560 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        272 pts
                                        'seleziona le celle visibili del range B2:B10
                                        Range("B2:B10").SpecialCells((xlCellTypeVisible).Select

                                        In pratica SpecialCells funziona così: dato un range, seleziona le celle "speciali" di quel range, dove la specialità è indicata da un parametro che devi passare a SpecialCells; i parametri appaiono nell'editor di VBA appena digiti la parentesi dopo SpecialCells. In questo caso (dove le righe sono filtrate e quindi alcune sono nascoste alla vista), vogliamo un riferimento alle sole celle visibili perché poi dobbiamo recuperarne il valore. Il parametro che ci interessa è xlCellTypeVisible.

                                        Sub SendEmailUsingGmailStandard()
                                        Dim s as String
                                        Dim r as Range
                                        dim v as Variant
                                        .
                                        .
                                        .
                                            ' Set all email properties
                                            With NewMail
                                                .From = "..."
                                                
                                                ' recuperiamo il contenuto delle celle visibili da B2 in poi
                                                Set r = Range(Range("B2"), Range("B2").End(xlDown)).SpecialCells(xlCellTypeVisible)
                                                ' e lo assegniamo alla variabile s, dobbiamo scandire cella per cella del range filtrato
                                                For Each v in r
                                                    s = s & v & "; "        ' gli indirizzi sono separati da punto e virgola
                                                Next
                                                s = Left$(s, Len(s)-1)
                                                ' infine assegniamo al campo mail To il valore della variabile s che contiene i destinatari
                                                .To = s
                                        .
                                        .
                                        .
                                        End Sub

                                        Ho indicato solo le modifiche (aggiunte) da fare al codice. Il resto è invariato.
                                        Gli indirizzi inseriti in colonna B dovrebbero essere inseriti correttamente nel campo del destinatario mail, separati da punto e virgola (se per caso Gmail non accetta il punto e virgola ma vuole la virgola, vedi bene dove fare la modifica).
                                        Dovrebbe essere sufficiente 🙂

                                      Login Registrati
                                      Stai vedendo 18 articoli - dal 51 a 68 (di 68 totali)
                                      Rispondi a: Salva file con Nome (dati presi da celle diverse) sia in excel che PDF
                                      Gli allegati sono permessi solo ad utenti REGISTRATI
                                      Le tue informazioni: