调用函数时出错:参数数量错误或属性赋值无效

时间:2016-09-26 09:12:55

标签: word-vba outlook-vba

此代码试图对mailmerge附件程序进行改进。我的尝试是将多个收件人包含到.To.CC。我找到了一些代码,但无法让SendMessage工作。

Sub sendmail()
Dim Source As Document, Maillist As Document, TempDoc As Document
Dim mysubject As String, message As String, title As String
Dim datarange As Range 
Dim body As String
Dim recips As Variant
Dim ccs As Variant
Dim bccs As Variant
Dim j As Integer
Dim attachs As Variant
Set Source = ActiveDocument
With Dialogs(wdDialogFileOpen)  
    .Show
End With
Set Maillist = ActiveDocument
' Show an input box asking the user for the subject to be inserted into the email messages
message = "Enter the subject to be used for each email message."    ' Set prompt.
title = " Email Subject Input"    ' Set title.
' Display message, title
mysubject = InputBox(message, title)
' Iterate through the Sections of the Source document and the rows of the catalog mailmerge document,
' extracting the information to be included in each email.

'IMPORTANT: This assumes your email addresses in the table are separated with commas!
For j = 0 To Source.Sections.Count - 1
    body = Source.Sections(j).Range.Text
    'get to recipients from tables col 1 (I'd prefer this in excel, it's tables are much better!)
    Set datarange = Maillist.Tables(1).Cell(j, 1).Range
    datarange.End = datarange.End - 1
    recips = Split(datarange.Text)
    'CC's
    Set datarange = Maillist.Tables(1).Cell(j, 2).Range
    datarange.End = datarange.End - 1
    ccs = Split(datarange.Text)
    'BCC's
    Set datarange = Maillist.Tables(1).Cell(j, 3).Range
    datarange.End = datarange.End - 1
    bccs = Split(datarange.Text)

    'Attachments array, should be paths, handled by the mail app, in an array
    ReDim attachs(Maillist.Tables(1).Columns.Count - 3) 'minus 2 because you start i at 2 and minus one more for option base 0
    For i = 2 To Maillist.Tables(1).Columns.Count
        Set datarange = Maillist.Tables(1).Cell(j, i).Range
        datarange.End = datarange.End - 1
        attachs(i) = Trim(datarange.Text)
    Next i

   'call the mail sender
   SendMessage recips, Subject, body, ccs, bccs, False, attachs
   Next j
Maillist.Close wdDoNotSaveChanges
MsgBox Source.Sections.Count - 1 & " messages have been sent."
End Sub

错误是

Wrong number of arguments or invalid property assignment

显示SendMessage功能。 ' SendMessage recips,Subject,body,ccs,bccs,False,attachs

1 个答案:

答案 0 :(得分:1)

您没有为“SendMessage函数”显示的代码必须接受与此行相同数量的参数(参数)。

'call the mail sender
SendMessage recips, Subject, body, ccs, bccs, False, attachs

这将是七个匹配的参数:    recips,Subject,body,ccs,bccs,False,attachs

它可能看起来像:

Function SendMessage (fnrecips, fnSubject, fnbody, fnccs, fnbccs, fnFalse, fnattachs)

如果您愿意,名称可以相同。