excel - 如何在循环中将多个文件附加到消息中?
问题描述
我正在尝试将多个文件附加到循环中的消息。下面的代码应该执行以下操作:
- 打开文件选择器
- 我会选择或更多文件
- 这些文件将通过电子邮件发送到我的电子表格中指定的地址
我能够选择一个文件并发送带有附件的电子邮件。
当我选择两个或更多文件时,代码将在以下部分停止:
For fichier1 = LBound(fichier1) To UBound(fichier1)
MonMessage.Attachments.Add fichier1
Next fichier1
注意:我没有使用 Outlook 对象的引用,因为另一个宏停止工作。
完整代码
Sub Send_Email()
Dim Fichier As Variant
Dim A As Integer
Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMessagerie.CreateItem(0)
fichier1 = Application.GetOpenFilename("File to send (*.XLS*), *.XLS*", _
Title:="Pick at least One file", _
MultiSelect:=True)
If Not IsArray(fichier1) Then
If fichier1 = "" Or fichier1 = False Then
MsgBox "No file selected!", vbExclamation, "Atention"
Application.ScreenUpdating = True
Exit Sub
End If
End If
MonMessage.To = "myEmail@321.com"
MonMessage.CC = ""
'loop to Attach 1 or more files
For fichier1 = LBound(fichier1) To UBound(fichier1)
MonMessage.Attachments.Add fichier1
Next fichier1
MonMessage.Subject = "Subject"
MonMessage.Body = "test"
MonMessage.Display
'MonMessage.Send
Set MaMessagerie = Nothing
'MsgBox "Email sent"
End Sub
解决方案
来自 Microsoft 文档中的For...Next语句正确的语法是:
For counter = start To end
其中计数器是一个有效的数值变量。
一个基本的例子是:
For i = 1 to 5
在您的代码中,您将计数器作为一个对象,这就是它导致错误的原因。如果要使用对象进行迭代,可以尝试For Each...Next语句。
语法是:
对于组中的每个元素
一个基本的例子是
Dim oItem as Variant
For Each oItem in oCollection
或我最喜欢的用途之一:
Dim Cell as Range
For Each Cell in Range("A1:A4").Cells
在您的代码中,您需要更改元素,使其成为一个单独的变量,因为您具有与element和group相同的对象。
我会建议类似:
Dim oFile as Variant
For Each oFile in fichier1
MonMessage.Attachments.Add oFile
Next oFile
推荐阅读
- android - 为什么我的recyclerview里面的适配器没有显示?
- selenium - 如何使用 selenium 处理表
- sql - 如何在分配参数后但在打开之前记录 SQL.text
- android - Rocket.Chat - 从另一个应用程序开始火箭聊天
- ruby-on-rails - wicked_pdf 我想解决heroku和本地环境显示大小不同的问题
- r - 如何使用shinydashboard的材质切换[R]
- java - Java jdom 不打印所有元素,打印空字符串
- r - 我在 R 中导入的 .csv 中的第一列以 0 开头,我想更改它
- angular - Angular 4 - 使用 .htaccess 重定向到 https 时出现错误 404
- typescript - 带有未定义可变参数的打字稿回调