Dimensione variabili string
Hai un problema con Excel? 
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
Vuoi Approfondire?