【发布时间】:2014-07-03 15:32:48
【问题描述】:
我有一个用户表单,它模仿电子邮件表单(收件人、抄送、附件、正文、主题等),并添加了一个填充有名称列表的列表框。用户选择一个名称,“收件人:”列表框将填充适当的电子邮件地址。接下来 FileDialogOpen 弹出,用户选择附件(附件框填充所选文件的名称)。这对我来说很棘手。
选择附件后,用户可以填写“主题”和“正文”,然后单击调用 SendEmail 子的“确定”按钮,但实际附件路径无法传递,因为该子 (GetFiles) 已经完成。如何存储稍后为 SendEmail 子调用的文件路径?这是我已经拥有的sn-ps。
Sub GetFiles() 'Multi File picker dialog box
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vSelectedItems As Variant
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = True
GetFile = Application.FileDialog(msoFileDialogOpen).Show
If GetFile <> 0 Then
For i = 1 To Application.FileDialog(msoFileDialogOpen).SelectedItems.Count
strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(i)
Next i
End If
With fd
For Each vSelectedItems In .SelectedItems
Items = vrtSelectedItems
Me.AttachBox.AddItem vSelectedItems
Next vSelectedItems
End With
在用户确认要发送电子邮件的信息正确后,单击“确定”按钮附加的发送电子邮件。
Private Sub OKButton_Click()
Dim OutApp As Object
Dim OutMail As Object
Dim sEmail As Variant
Dim myArray As Variant
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
myArray = ListBox1.List(ListBox1.ListIndex, 0) 'retrieving name selected and adding email addresses
Set found = Cells.Find(What:=myArray, After:=ActiveCell, LookIn:=xlFormulas, Lookat:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
Set sEmail = Range(found.Offset(0, 1), found.End(xlToRight))
sEmail.Copy
sRecipient = ""
For Each Item In sEmail
sRecipient = sRecipient & ";" & Item.Value
Next
On Error Resume Next
With OutMail
.To = sRecipient
.CC = CC.Value
.BCC = ""
'.FROM = ""
.Subject = Subject.Value
.Body = Body.Value
For Each vSelectedItems In GetFile 'no passing of file paths :(
.Attachments.Add Item
Next vSelectedItems
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
Range("A1").Activate
Call CancelButton_Click
End Sub
答案可能会盯着我看,但我既不是专家也不是新手。提前致谢。
【问题讨论】:
-
可以使用全局变量吗? stackoverflow.com/questions/2722146