VBA в Excel для управления флажком управления контентом в документе Word - PullRequest
0 голосов
/ 05 декабря 2018


Я исследовал множество постов по этой теме, и ниже приведен код, который я придумал в стандартном модуле в Excel, чтобы попытаться пометить флажок Контроля содержимого в документе Word как True, но мне кажется,из-за отсутствия ключевого фрагмента кода и неспособности выяснить, что это за фрагмент кода, который приводит к тому, что этот код не выполняется, и не проверяет флажки управления.Любая помощь с благодарностью.

Private Sub TitleOrder_Click()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim cc As ContentControl  'Maybe this should this be Dim cc as object instead??"

    ContLoanFile.Hide

    Application.ScreenUpdating = False

    SaveAsName = ThisWorkbook.path & "\Title Order Form - " & Split(wsSI.Range("PBName"))(2) & ".docx"

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Add(Template:="Z:\Title Work Template.docx", NewTemplate:=False, DocumentType:=0)
    Set cc = WordDoc.SelectContentControlsByTag("mpfPlat").Item(1)

    If wsFI.Range("Plat_DrawingYes") = "TRUE" Then
        If cc.Type = wdContentControlCheckBox Then
            cc.Checked = True
        End If
    End If


    WordApp.ActiveDocument.SaveAs FileName:=SaveAsName
    WordApp.Quit
    Set WordApp = Nothing

    Application.ScreenUpdating = True

End Sub

1 Ответ

0 голосов
/ 05 декабря 2018

Проблема, которая приводила к тому, что это не работало, была из-за того, как я установил значение ячейки на основе флажка UserForm Control.Я думал, что значение в ячейке было текстовой строкой, но, по всей видимости, не было (не уверен почему), поэтому, как только я удалил «» из рабочего слова «ИСТИНА» в If wsFI.Range("Plat_DrawingYes")="TRUE", код работал так, как ожидалось.Ниже приведено решение.Спасибо @Tim Williams за помощь.

Private Sub TitleOrder_Click()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim cc As ContentControl  'Maybe this should this be Dim cc as object instead??"

    ContLoanFile.Hide

    Application.ScreenUpdating = False

    SaveAsName = ThisWorkbook.path & "\Title Order Form - " & Split(wsSI.Range("PBName"))(2) & ".docx"

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Add(Template:="Z:\Title Work Template.docx", NewTemplate:=False, DocumentType:=0)
    Set cc = WordDoc.SelectContentControlsByTag("mpfPlat").Item(1)

    If wsFI.Range("Plat_DrawingYes") = TRUE Then
        If cc.Type = wdContentControlCheckBox Then
            cc.Checked = True
        End If
    End If


    WordApp.ActiveDocument.SaveAs FileName:=SaveAsName
    WordApp.Quit
    Set WordApp = Nothing

    Application.ScreenUpdating = True

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