Dimensione variabili string



  • Dimensione variabili string
    di Max Rotula (utente non iscritto) data: 13/06/2017 09:16:16

    Ciao a tutti

    Sto cercando di creare un messaggio di posta elettronica con un collegamento ipertestuale come segue

    ActiveWorkbook.FollowHyperlink ("mailto:" & MailA1 & "," & MailA2 & "," & MailA3 & "," & MailA4 & "?cc=" & MailCC1 & "," & MailCC2 & "," & MailCC3 & "," & MailCC4 & "," & MailCC5 & "&subject=" & MailOggetto & "&body=" & MailCorpo)

    Tutti i vari Mail sono variabili String e recuperano il proprio valore da celle sul foglio. Se però il testo diventa troppo lungo la routine si blocca per un errore di run time. Può dipendere dalla dimensione delle variabili String? C'è un limite? Ho letto che le variabili String possono essere a dimensione fissa o variabile, ma come si può dichiarare questo in una routine? Le ho dichiarate come Public perché sono comuni a diverse routine

    Grazie a tutti per le risposte



  • di Mister_x (utente non iscritto) data: 13/06/2017 09:34:26

    ciao
    da help

    Tipo di dati String
    Vedere anche Esempio Informazioni aggiuntive

    Esistono due tipi di stringa:

    Stringhe di lunghezza variabile, che possono contenere fino a circa 2 miliardi (2^31) di caratteri.


    Stringhe di lunghezza fissa, che possono contenere da 1 a circa 64 KB (2^16) di caratteri.
    Nota Una stringa di lunghezza fissa di tipo Public non può essere utilizzata in un modulo di classe.

    I codici per i caratteri String sono compresi fra 0 e 255. I primi 128 caratteri (0-127) del set di caratteri corrispondono alle lettere e ai simboli di una tastiera standard americana. Questi primi 128 caratteri sono gli stessi definiti dal set di caratteri ASCII. I successivi 128 caratteri (128-255) sono caratteri speciali, quali lettere di alfabeti internazionali, accenti, simboli di valuta e frazioni.Il carattere di dichiarazione del tipo per String è il simbolo del dollaro ($).

    PS prima di utilizzarla prova a svuotare questa
    stringa = ""

    ciao





  • di Marius44 data: 13/06/2017 09:35:03

    Ciao
    Una querystring ha limite 255... che io sappia.
    Non sono esperto di invio mail ma, credo, che tu debba ricorrere ad un ciclo per inviare tante mail a indirizzi diversi. Facendo come da te indicato tutti gli indirizzi diventano uno, concatenato (sempre se non erro) e la lunghezza va ben oltre.

    Ciao,
    Mario

    PS - quasi certamente ho detto sciocchezze ma se invio una mail a due indirizzi diversi, con Outlook, mi mette un punto e virgola (;) non una virgola (,)



  • di Max Rotula (utente non iscritto) data: 13/06/2017 09:41:30

    Grazie per la risposta

    la mail è unica, che ha più destinatari e più persone in CC. Inoltre non uso outlook, ma Lotus, e il separatore virgola è corretto

    Comunque ora provo a vedere la lunghezza della stringa che mi da errore



  • di alfrimpa data: 13/06/2017 09:42:53

    Ciao Max

    Per quanto riguarda le dimensioni di una variabile di tipo String sono per quanto ne so di circa 2 miliardi di caratteri per le stringhe a lunghezza variabile e di circa 65.000 caratteri per quelle a lunghezza fissa (se fai un ricerca in rete trovi molte informazioni).

    Non credo quindi che il problema sia quello.

    Alfredo

    P.S. Chiedo scusa a Mister_x e a Mario per la sovrapposizione.




  • Massimo
    di Max Rotula (utente non iscritto) data: 13/06/2017 10:00:24

    Ciao Alfrimpa

    Infatti il problema non è la lunghezza della variabile, ma deve comunque essere un problema di lunghezza complessiva del messaggio. Probabilmente c'è un limite nella lunghezza dell'hyperlink? Quando il messaggio diventa troppo lungo mi restituisce un errore run time 5
     
    MailA1 = Cells(2, 1).Value
    MailCC1 = Cells(4, 1).Value
    MailCC2 = Cells(5, 1).Value
    MailCC3 = Cells(6, 1).Value
    MailCC4 = Cells(7, 1).Value
    MailCC5 = Cells(8, 1).Value
    MAilCC6 = Cells(9, 1).Value
    MailOggetto = Cells(13, 1).Value
    MailCorpo = ""
    For A = 17 To 30
        MailCorpo = MailCorpo + Cells(A, 1).Value & "%0d%0a"
    Next
    ActiveWorkbook.FollowHyperlink ("mailto:" & MailA1 & "?cc=" & MailCC1 & "," & MailCC2 & "," & MailCC3 & "," & MailCC4 & "," & MailCC5 & "," & MAilCC6 & "&subject=" & MailOggetto & "&body=" & MailCorpo)
    
    End Sub



  • di alfrimpa data: 13/06/2017 10:32:00

    Leggendo un po' in giro sembra che per FollowHyperlinks vi sia un limite di 255 caratteri.

    Guarda qui

    h t tp s://www.pcreview.co.uk/threads/followhyperlink-extrainfo-string-max-length.1764601/

    Alfredo





  • di Max Rotula (utente non iscritto) data: 13/06/2017 11:29:44

    La limitazione a 255 caratteri dovrebbe valere per il collegamento ipertestuale sul foglio. Su VBA si arriva a (io sono arrivato a) 848 caratteri (non so perché questo numero) 848 caratteri compreso tutti gli indirizzi, il soggetto e il corpo
    La soluzione che ho trovato per il momento è rendere il più stringato possibile il messaggio, sperando che qualcuno possa suggerire un metodo migliore

    Grazie a tutti per il tempo dedicatomi



  • di Marius44 data: 13/06/2017 16:01:28

    Buon pomeriggio

    Come avevo scritto (premettendo che NON mi intendo molto di invio Mail) una " querystring ha limite 255 "
    e querystring s'intende, appunto, l'indirizzo completo.

    Se ho detto ancora sciocchezze, avvisatemi.
    Ciao,
    Mario