Arrays 如何在VBA中使用.body上的集合项?
如何将内容集合插入电子邮件的.HTMLBody中Arrays 如何在VBA中使用.body上的集合项?,arrays,excel,vba,loops,collections,Arrays,Excel,Vba,Loops,Collections,如何将内容集合插入电子邮件的.HTMLBody中 Option Explicit Dim Managers As Collection Sub PopulateManagers() Set Managers = New Collection Dim currWS As Worksheet Set currWS = ThisWorkbook.Worksheets("publico") With currWS Dim loopRange As R
Option Explicit
Dim Managers As Collection
Sub PopulateManagers()
Set Managers = New Collection
Dim currWS As Worksheet
Set currWS = ThisWorkbook.Worksheets("publico")
With currWS
Dim loopRange As Range
Set loopRange = .Range(.Cells(2, 8), .Cells(.UsedRange.Rows.Count, 8)) 'H2 to the last used row; assuming it's the column for manager emails
End With
Dim currCell As Range
For Each currCell In loopRange
If currCell.value = vbNullString Then 'no manager; try for a head manager
If currCell.Offset(0, 1).value = vbNullString Then 'no managers at all
Dim currManagerEmail As String
currManagerEmail = "NoManagerFound"
Else
currManagerEmail = currCell.Offset(0, 1).Text
End If
Else
currManagerEmail = currCell.Text
End If
Dim currManager As Manager
Set currManager = Nothing
On Error Resume Next
Set currManager = Managers(currManagerEmail)
On Error GoTo 0
If currManager Is Nothing Then
Set currManager = New Manager
currManager.ManagerEmail = currManagerEmail
Managers.Add currManager, Key:=currManager.ManagerEmail
End If
Dim currClient As Client
Set currClient = New Client
currClient.ClientID = currWS.Cells(currCell.Row, 1).Text 'assumes client ID is in column 1
If currWS.Cells(currCell.Row, 1).Text <> "" Then
currManager.Clients.Add currClient, Key:=currClient.ClientID
Else: End If
Next
Dim OutlookApp As Object
Dim emailformatado As Object
Dim destinatario As String
Dim comcopia As String
Dim assunto As String
'Dim body_ As String
Dim anexo As String
Dim corpodoemail As String
Set OutlookApp = CreateObject("Outlook.Application")
For Each currManager In Managers
assunto = Sheets("CAPA").Range("F8").value 'Assunto do e-mail, conforme CAPA.
'publicoalvo = cell.Offset(0, 2).Value
'body_ = Sheets("CAPA").Range("D2").Value
corpodoemail = Sheets("CAPA").Range("F11").value & "<br><br>" & _
Sheets("CAPA").Range("F13").value & "<br><br>" '& _
Managers & "<br><br><br>"
'comcopia = cell.Offset(0, 3).Value 'Caso necessário, adaptar para enviar email com cópia.
'anexo = cell.Offset(0, 4).Value 'Caso necessário, adaptar para incluir anexo ao email.
'Montagem e envio dos emails.
Set emailformatado = OutlookApp.CreateItem(0)
With emailformatado
.To = currManager.ManagerEmail
'.CC = comcopia
.Subject = assunto
.HTMLBody = corpodoemail '& publicoalvo
'.Attachments.Add anexo
'.Display
End With
emailformatado.Send
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
我从下面的代码中收集了一些项目,其中包含电子邮件地址及其相应的客户端。我必须在集合中循环,发送一封电子邮件,并在每封电子邮件中附加客户列表
Option Explicit
Dim Managers As Collection
Sub PopulateManagers()
Set Managers = New Collection
Dim currWS As Worksheet
Set currWS = ThisWorkbook.Worksheets("publico")
With currWS
Dim loopRange As Range
Set loopRange = .Range(.Cells(2, 8), .Cells(.UsedRange.Rows.Count, 8)) 'H2 to the last used row; assuming it's the column for manager emails
End With
Dim currCell As Range
For Each currCell In loopRange
If currCell.value = vbNullString Then 'no manager; try for a head manager
If currCell.Offset(0, 1).value = vbNullString Then 'no managers at all
Dim currManagerEmail As String
currManagerEmail = "NoManagerFound"
Else
currManagerEmail = currCell.Offset(0, 1).Text
End If
Else
currManagerEmail = currCell.Text
End If
Dim currManager As Manager
Set currManager = Nothing
On Error Resume Next
Set currManager = Managers(currManagerEmail)
On Error GoTo 0
If currManager Is Nothing Then
Set currManager = New Manager
currManager.ManagerEmail = currManagerEmail
Managers.Add currManager, Key:=currManager.ManagerEmail
End If
Dim currClient As Client
Set currClient = New Client
currClient.ClientID = currWS.Cells(currCell.Row, 1).Text 'assumes client ID is in column 1
If currWS.Cells(currCell.Row, 1).Text <> "" Then
currManager.Clients.Add currClient, Key:=currClient.ClientID
Else: End If
Next
Dim OutlookApp As Object
Dim emailformatado As Object
Dim destinatario As String
Dim comcopia As String
Dim assunto As String
'Dim body_ As String
Dim anexo As String
Dim corpodoemail As String
Set OutlookApp = CreateObject("Outlook.Application")
For Each currManager In Managers
assunto = Sheets("CAPA").Range("F8").value 'Assunto do e-mail, conforme CAPA.
'publicoalvo = cell.Offset(0, 2).Value
'body_ = Sheets("CAPA").Range("D2").Value
corpodoemail = Sheets("CAPA").Range("F11").value & "<br><br>" & _
Sheets("CAPA").Range("F13").value & "<br><br>" '& _
Managers & "<br><br><br>"
'comcopia = cell.Offset(0, 3).Value 'Caso necessário, adaptar para enviar email com cópia.
'anexo = cell.Offset(0, 4).Value 'Caso necessário, adaptar para incluir anexo ao email.
'Montagem e envio dos emails.
Set emailformatado = OutlookApp.CreateItem(0)
With emailformatado
.To = currManager.ManagerEmail
'.CC = comcopia
.Subject = assunto
.HTMLBody = corpodoemail '& publicoalvo
'.Attachments.Add anexo
'.Display
End With
emailformatado.Send
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
选项显式
作为集合的Dim管理器
次级人口管理者()
集合管理器=新集合
将当前文档作为工作表
设置currWS=ThisWorkbook.Worksheets(“publico”)
用咖喱
变暗范围作为范围
将loopRange=.Range(.Cells(2,8),.Cells(.UsedRange.Rows.Count,8))H2设置为最后使用的行;假设它是经理电子邮件的专栏
以
Dim Curr单元格作为范围
对于loopRange中的每个单元格
如果currCell.value=vbNullString,则“无管理器;试着找一个总经理
如果currCell.Offset(0,1).value=vbNullString,则“根本没有管理器”
Dim CURRMANAGERAMIL作为字符串
currmageremail=“NoManagerFound”
其他的
currManagerEmail=currCell.Offset(0,1).Text
如果结束
其他的
currManagerEmail=currCell.Text
如果结束
以经理身份任命经理
设置currManager=Nothing
出错时继续下一步
设置currManager=Manager(CurrManagerMail)
错误转到0
如果经理什么都不是
设置当前管理器=新管理器
currManager.ManagerEmail=currManagerEmail
Managers.Add currManager,Key:=currManager.ManagerEmail
如果结束
将客户机设置为客户机
Set currClient=新客户端
currClient.ClientID=currWS.Cells(currCell.Row,1).Text'假定客户端ID在第1列中
如果currWS.Cells(currCell.Row,1).Text“”,则
currManager.Clients.Add currClient,键:=currClient.ClientID
否则:如果
下一个
Dim OutlookApp作为对象
Dim emailformatado作为对象
作为字符串的模糊目标
朦胧的幻觉
像绳子一样暗的
“暗体”作为字符串
Dim anexo作为字符串
Dim corpodoemail作为字符串
设置OutlookApp=CreateObject(“Outlook.Application”)
对于经理中的每个经理
ASSUTO=工作表(“CAPA”)。范围(“F8”)。值“ASSUTO”用于发送电子邮件,确认CAPA。
'publicoalvo=cell.Offset(0,2).Value
“主体=板材(“CAPA”).范围(“D2”).值
corpodoemail=Sheets(“CAPA”).范围(“F11”).值和_
图纸(“CAPA”).范围(“F13”).值和_
经理&“
”
'comcopia=cell.Offset(0,3).Value'Caso necessário,adapter para enviar email comópia。
“anexo=cell.Offset(0,4).Value”Caso necessário,adapter para包括anexo ao电子邮件。
“Montagem e envio发送电子邮件。
设置emailformatado=OutlookApp.CreateItem(0)
用emailformatado
.To=currManager.ManagerEmail
“.CC=comcopia
.Subject=assto
.HTMLBody=corpodoemail'&publicoalvo
'.Attachments.Add anexo
"展示,
以
emailformatado.Send
下一个
应用
.EnableEvents=True
.ScreenUpdate=True
以
端接头
收集工作正在很好地构建和存储信息,但我很难将这些信息转换为电子邮件
Option Explicit
Dim Managers As Collection
Sub PopulateManagers()
Set Managers = New Collection
Dim currWS As Worksheet
Set currWS = ThisWorkbook.Worksheets("publico")
With currWS
Dim loopRange As Range
Set loopRange = .Range(.Cells(2, 8), .Cells(.UsedRange.Rows.Count, 8)) 'H2 to the last used row; assuming it's the column for manager emails
End With
Dim currCell As Range
For Each currCell In loopRange
If currCell.value = vbNullString Then 'no manager; try for a head manager
If currCell.Offset(0, 1).value = vbNullString Then 'no managers at all
Dim currManagerEmail As String
currManagerEmail = "NoManagerFound"
Else
currManagerEmail = currCell.Offset(0, 1).Text
End If
Else
currManagerEmail = currCell.Text
End If
Dim currManager As Manager
Set currManager = Nothing
On Error Resume Next
Set currManager = Managers(currManagerEmail)
On Error GoTo 0
If currManager Is Nothing Then
Set currManager = New Manager
currManager.ManagerEmail = currManagerEmail
Managers.Add currManager, Key:=currManager.ManagerEmail
End If
Dim currClient As Client
Set currClient = New Client
currClient.ClientID = currWS.Cells(currCell.Row, 1).Text 'assumes client ID is in column 1
If currWS.Cells(currCell.Row, 1).Text <> "" Then
currManager.Clients.Add currClient, Key:=currClient.ClientID
Else: End If
Next
Dim OutlookApp As Object
Dim emailformatado As Object
Dim destinatario As String
Dim comcopia As String
Dim assunto As String
'Dim body_ As String
Dim anexo As String
Dim corpodoemail As String
Set OutlookApp = CreateObject("Outlook.Application")
For Each currManager In Managers
assunto = Sheets("CAPA").Range("F8").value 'Assunto do e-mail, conforme CAPA.
'publicoalvo = cell.Offset(0, 2).Value
'body_ = Sheets("CAPA").Range("D2").Value
corpodoemail = Sheets("CAPA").Range("F11").value & "<br><br>" & _
Sheets("CAPA").Range("F13").value & "<br><br>" '& _
Managers & "<br><br><br>"
'comcopia = cell.Offset(0, 3).Value 'Caso necessário, adaptar para enviar email com cópia.
'anexo = cell.Offset(0, 4).Value 'Caso necessário, adaptar para incluir anexo ao email.
'Montagem e envio dos emails.
Set emailformatado = OutlookApp.CreateItem(0)
With emailformatado
.To = currManager.ManagerEmail
'.CC = comcopia
.Subject = assunto
.HTMLBody = corpodoemail '& publicoalvo
'.Attachments.Add anexo
'.Display
End With
emailformatado.Send
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
如何将此信息转换为电子邮件
Option Explicit
Dim Managers As Collection
Sub PopulateManagers()
Set Managers = New Collection
Dim currWS As Worksheet
Set currWS = ThisWorkbook.Worksheets("publico")
With currWS
Dim loopRange As Range
Set loopRange = .Range(.Cells(2, 8), .Cells(.UsedRange.Rows.Count, 8)) 'H2 to the last used row; assuming it's the column for manager emails
End With
Dim currCell As Range
For Each currCell In loopRange
If currCell.value = vbNullString Then 'no manager; try for a head manager
If currCell.Offset(0, 1).value = vbNullString Then 'no managers at all
Dim currManagerEmail As String
currManagerEmail = "NoManagerFound"
Else
currManagerEmail = currCell.Offset(0, 1).Text
End If
Else
currManagerEmail = currCell.Text
End If
Dim currManager As Manager
Set currManager = Nothing
On Error Resume Next
Set currManager = Managers(currManagerEmail)
On Error GoTo 0
If currManager Is Nothing Then
Set currManager = New Manager
currManager.ManagerEmail = currManagerEmail
Managers.Add currManager, Key:=currManager.ManagerEmail
End If
Dim currClient As Client
Set currClient = New Client
currClient.ClientID = currWS.Cells(currCell.Row, 1).Text 'assumes client ID is in column 1
If currWS.Cells(currCell.Row, 1).Text <> "" Then
currManager.Clients.Add currClient, Key:=currClient.ClientID
Else: End If
Next
Dim OutlookApp As Object
Dim emailformatado As Object
Dim destinatario As String
Dim comcopia As String
Dim assunto As String
'Dim body_ As String
Dim anexo As String
Dim corpodoemail As String
Set OutlookApp = CreateObject("Outlook.Application")
For Each currManager In Managers
assunto = Sheets("CAPA").Range("F8").value 'Assunto do e-mail, conforme CAPA.
'publicoalvo = cell.Offset(0, 2).Value
'body_ = Sheets("CAPA").Range("D2").Value
corpodoemail = Sheets("CAPA").Range("F11").value & "<br><br>" & _
Sheets("CAPA").Range("F13").value & "<br><br>" '& _
Managers & "<br><br><br>"
'comcopia = cell.Offset(0, 3).Value 'Caso necessário, adaptar para enviar email com cópia.
'anexo = cell.Offset(0, 4).Value 'Caso necessário, adaptar para incluir anexo ao email.
'Montagem e envio dos emails.
Set emailformatado = OutlookApp.CreateItem(0)
With emailformatado
.To = currManager.ManagerEmail
'.CC = comcopia
.Subject = assunto
.HTMLBody = corpodoemail '& publicoalvo
'.Attachments.Add anexo
'.Display
End With
emailformatado.Send
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
你好。你有什么问题?发生了什么事?我很难将收集项目输入Outlook电子邮件正文。@Luiscrado。我正在寻找一种方法来添加corret集合项,该项来自“此处显示部分中的currManager:corpodoemail=Sheets(“CAPA”).Range(“F11”).value&“
”和“Sheets”(“CAPA”).Range(“F13”).value&“
”和“Managers&“
”
Option Explicit
Dim Managers As Collection
Sub PopulateManagers()
Set Managers = New Collection
Dim currWS As Worksheet
Set currWS = ThisWorkbook.Worksheets("publico")
With currWS
Dim loopRange As Range
Set loopRange = .Range(.Cells(2, 8), .Cells(.UsedRange.Rows.Count, 8)) 'H2 to the last used row; assuming it's the column for manager emails
End With
Dim currCell As Range
For Each currCell In loopRange
If currCell.value = vbNullString Then 'no manager; try for a head manager
If currCell.Offset(0, 1).value = vbNullString Then 'no managers at all
Dim currManagerEmail As String
currManagerEmail = "NoManagerFound"
Else
currManagerEmail = currCell.Offset(0, 1).Text
End If
Else
currManagerEmail = currCell.Text
End If
Dim currManager As Manager
Set currManager = Nothing
On Error Resume Next
Set currManager = Managers(currManagerEmail)
On Error GoTo 0
If currManager Is Nothing Then
Set currManager = New Manager
currManager.ManagerEmail = currManagerEmail
Managers.Add currManager, Key:=currManager.ManagerEmail
End If
Dim currClient As Client
Set currClient = New Client
currClient.ClientID = currWS.Cells(currCell.Row, 1).Text 'assumes client ID is in column 1
If currWS.Cells(currCell.Row, 1).Text <> "" Then
currManager.Clients.Add currClient, Key:=currClient.ClientID
Else: End If
Next
Dim OutlookApp As Object
Dim emailformatado As Object
Dim destinatario As String
Dim comcopia As String
Dim assunto As String
'Dim body_ As String
Dim anexo As String
Dim corpodoemail As String
Set OutlookApp = CreateObject("Outlook.Application")
For Each currManager In Managers
assunto = Sheets("CAPA").Range("F8").value 'Assunto do e-mail, conforme CAPA.
'publicoalvo = cell.Offset(0, 2).Value
'body_ = Sheets("CAPA").Range("D2").Value
corpodoemail = Sheets("CAPA").Range("F11").value & "<br><br>" & _
Sheets("CAPA").Range("F13").value & "<br><br>" '& _
Managers & "<br><br><br>"
'comcopia = cell.Offset(0, 3).Value 'Caso necessário, adaptar para enviar email com cópia.
'anexo = cell.Offset(0, 4).Value 'Caso necessário, adaptar para incluir anexo ao email.
'Montagem e envio dos emails.
Set emailformatado = OutlookApp.CreateItem(0)
With emailformatado
.To = currManager.ManagerEmail
'.CC = comcopia
.Subject = assunto
.HTMLBody = corpodoemail '& publicoalvo
'.Attachments.Add anexo
'.Display
End With
emailformatado.Send
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub