前往顾页
以后地位: 主页 > 精通Office > Excel教程 >

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

时候:2014-06-12 16:11来源:知行网www.zhixing123.cn 编辑:麦田守望者

公司利用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的某个单位格中,不合收件人之间用分号「;」隔开。这时候辰我们可以如许调用:

.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
 

------分开线----------------------------
标签(Tag):EXCEL excel2013 Excel技能 Excel2007 Excel2003 Excel2010 Excel教程 Excel实例教程
------分开线----------------------------
保举内容
猜你感兴趣