Możesz użyć pętli For Each, ma taką zaletę, że "wie" jakiej długości jest tablica.
Propozycja modyfikacji Twojego kodu
Sub Wyslij_maila(dane)
Dim thund As String
Dim email As String
Dim temat As String
Dim body As String
email = ";"
temat = "123"
body = "Dane: "
For Each rekord In dane
body = body & rekord & " "
Loop
thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe " & _
"-compose " & """" & _
"to='" & email & "'," & _
"subject='" & temat & "'," & _
"body='" & body & "'" & """"
Call Shell(thund, vbHide)
Application.Wait (Now + TimeValue("0:00:2"))
'SendKeys "^{ENTER}", True
Application.Wait (Now + TimeValue("0:00:2"))
'SendKeys "^{ENTER}", True
End Sub
Możesz tez użyć funkcji Join i wtedy masz:
Sub Wyslij_maila(dane)
Dim thund As String
Dim email As String
Dim temat As String
Dim body As String
email = ";"
temat = "123"
body = "Dane: " & Join(dane, " ")
thund = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe " & _
"-compose " & """" & _
"to='" & email & "'," & _
"subject='" & temat & "'," & _
"body='" & body & "'" & """"
Call Shell(thund, vbHide)
Application.Wait (Now + TimeValue("0:00:2"))
'SendKeys "^{ENTER}", True
Application.Wait (Now + TimeValue("0:00:2"))
'SendKeys "^{ENTER}", True
End Sub
P.S. Zamiast " ", można użyć zapisu Chr(32), zamiast """" - Chr(34) itd.
[ Chr(...) ] [ Character set (0 - 127) ]