Присвоение значений пользовательским свойствам worddoc в Excel-VBA. Недопустимый вызов процедуры? - PullRequest
0 голосов
/ 08 ноября 2019

Я изменяю часть своего старого кода (который работал нормально), когда наталкиваюсь на этот «Недопустимый вызов процедуры или аргумент» на нетронутом куске кода. Я просто присваиваю значение пользовательскому свойству в слове doc. Раньше у него не было проблем, и теперь это так ... куда я могу наплевать?

Я убедился, что MailRecepient содержит допустимую строку, которая не равна NULL. и CustomProperties должны иметь значение по умолчанию, верно? Значит, оно не должно быть пустым?

Sub LoadTemplate()

    'Grab Wordapp or make a new one. duh
    If Not WordApp Is Nothing Then
       Set WordApp = GetObject(, "Word.Application")
    Else
       Set WordApp = CreateObject("Word.Application")
    End If
    Set WordDocs = WordApp.Documents
    WordDocs.Add (WordDocumentFilename)


    Set DocumentObject = WordApp.activedocument
    Set DocumentProperties = WordApp.activedocument.CustomDocumentProperties

End Sub

Private Sub MainLoop()


    Dim LoopCounter As String
    Dim LoopRange As String 'Pulls A1 to give a range to loop through
    LoadWorkbook


    LoopCounter = 1
    LoopRange = DataObject.Worksheets(DataSheetName).Range("A" & LoopCounter).Value

    'main loops for each item.  Properties get updated from the doc here.

    Do While LoopRange <> ""
        'Creation of Mail Message
        LoadTemplate

        'Pull info from data to
        ' A = Name
        ' B = Email
        ' C = Template
        ' D = Tableau
        MailRecepient = DataObject.Worksheets(DataSheetName).Range("A" & LoopCounter)
        MailAddress = DataObject.Worksheets(DataSheetName).Range("B" & LoopCounter)
        TemplateName = DataObject.Worksheets(DataSheetName).Range("C" & LoopCounter)
        TableauName = DataObject.Worksheets(DataSheetName).Range("D" & LoopCounter)

        MailSubject = "Test"

        'Throws Run-time Error '5' below.
        DocumentProperties.Item("NameField").Value = MailRecepient 
        DocumentProperties.Item("LinkField").Value = TableauLink
        DocumentObject.Fields.Update
        DocumentObject.Content.Copy 'Sending the Contents of the Doc to the system clipboard. It'll past lat


        SendMail

        LoopCounter = LoopCounter + 1
        LoopRange = DataObject.Worksheets(DataSheetName).Range("A" & LoopCounter).Value
    Loop

    'Clean up processes.  If this gets bigger we'll move it
    DataObject.Close
    MsgBox ("Auto Mailing Process Complete. Remove this before going live.")

    DocumentObject.Close savechanges:=False


End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...