首页officeexcel正文

Excel VBA调用Lotus发送邮件的收件人长度问题

强国说学习2022-03-28421收件人长度问题邮件发送VBA调用LotusE

公司使用Lotus,我每天都通过Excel编写VBA代码自动调用Lotus发送邮件,发现一个奇怪的现象。一般我们通过下面的VBA代码指定邮件收件人:

.SendTo = "a1@b.com; a2@b.com; a3@b.com;"

但需要上面这个收件人列表不能超过256个字节,否则会被截断,从而丢失一部分收件人。

这个问题可以被解决。Lotus的收件人列表不光可以是字符串,还可以是字符串数组。所以下面这么写也是可以的:

.SendTo = Array("a1@b.com", "a2@b.com", "a3@b.com")

字符串数组里每一个字符串可以是多个接收人,但每个单独的字符串都不能超过256个字节,否则一样会被截断:

.SendTo = Array("a1@b.com; a2@b.com", "a3@b.com") ' it's OK too

通常我们会把收件人保存在Excel的某个单元格中,不同收件人之间用分号「;」隔开。这时候我们可以这样调用:

该文章内容来源于网络,由WPS之家(wps.qiangguoshuo.com)收集,希望能为广大朋友提供帮助。

.SendTo = Array(Split(Sheet1.range("A1").value(), ";"))

可一劳永逸解决字符串阶段问题。

另:

VBA中字符串被截断的问题不光发生在Lotus的接收人列表中,我很早就发现通过VBA修改Excel的数据连接字符串和SQL查询语句的时,字符串长度也不能超过256字节,一旦超过,需要用上面一样的办法解决,将字符串转成字符串数组:

' 更改数据表的来源
' wb:工作表对象
' connectionName:数据来源连接名称
' strSQL:新查询语句(修改SQL的查询代码)
' strSQLConnection:新连接语句(修改来源数据库,在对DBF数据库操作时非常有用)
' author: zhang@zhiqiang.org, 2010
Public Sub ChangeODBCConnection(wb As Excel.Workbook, connectionName As String, _
Optional strSQL As String = "", Optional strSQLConnection As String = "")

With wb.Connections(connectionName).OLEDBConnection
If Len(strSQLConnection) Then .Connection = SplitString(strSQLConnection) ' here
If Len(strSQL) Then .CommandText = SplitString(strSQL) ' here
End With
wb.Connections(connectionName).Refresh
End Sub

' 将字符串分割成短字符串的数组
Function SplitString(ByVal s As String) As Variant
Dim ss() As Variant
Dim i As Long

ReDim ss(0 To Len(s) \ 200) ' note: it is not 256
For i = 0 To UBound(ss)
ss(i) = Array(mid(s, i * 200 + 1, 200))
Next i

SplitString = ss
End Function

如想转载该文章请注明出处:强国说学习-qiangguoshuo.com
强国说学习

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

本文链接:https://www.qiangguoshuo.com/excel/10227.html