Ошибка обработчика ошибок при печати документов из Excel в Word - PullRequest
0 голосов
/ 15 апреля 2020

Я печатаю документы из Excel в Word. Недавно я добавил обработчик ошибок, поэтому в случае любой ошибки при печати он должен закрыть документ Word и выйти из него. Поэтому он не останется открытым в фоновом режиме и будет заблокирован в режиме «Только чтение».

Текущий код:

Sub opentemplateWordOC()
    Dim Paragraphe As Object, WordApp As Object, WordDoc As Object
    Dim wSystem As Worksheet
    Dim Cell As Range
    Dim wdRng As Object 'Word.Range
    Dim xlRng As Excel.Range
    Dim tempFolderPath As String
    Dim filePath As String
    Dim fileTitle As String
    Dim rngPara As Object

    On Error GoTo ErrorHandlerEndExecution

    'Application.ScreenUpdating = False

    Set wSystem = ThisWorkbook.Sheets("Templates")

    Dim File: File = Environ("Temp") & "\" & "OM_Technical_template" & ".docx"
    'creationsession Word
    Set WordApp = CreateObject("Word.Application")
    'word ll be close to run
    WordApp.Visible = False
    'open the file .doc
    Set WordDoc = WordApp.Documents.Open(File)

    With WordDoc
        'Here comes Footer
    .Bookmarks("Company").Range.Text = ThisWorkbook.Sheets("OtherData").Range("AK21").Value
    .Bookmarks("Department").Range.Text = ThisWorkbook.Sheets("OtherData").Range("AK22").Value
    .Bookmarks("FBusinessID").Range.Text = ThisWorkbook.Sheets("OtherData").Range("AK23").Value
    .Bookmarks("VAT").Range.Text = ThisWorkbook.Sheets("OtherData").Range("AK24").Value
    .Bookmarks("Domicile").Range.Text = ThisWorkbook.Sheets("OtherData").Range("AK25").Value

    Set xlRng = ThisWorkbook.Sheets("Order Confirmation").Range("G3", ThisWorkbook.Sheets("Order Confirmation").Range("G" & Rows.Count).End(xlUp))

    Set wdRng = .Range.Characters.Last

    For Each Cell In xlRng
        wdRng.InsertAfter vbCr & Cell.Offset(0, -5).Text
        Select Case LCase(Cell.Value)

        Case "title"
            wdRng.Paragraphs.Last.Style = .Styles("Title")

        Case "main"
            wdRng.Paragraphs.Last.Style = .Styles("Heading 2")

        End Select
    Next Cell

  'objWord.TablesOfContents(1).Update

        WordDoc.SaveAs2 Environ$("Temp") & "\" & _
        ThisWorkbook.Sheets("OtherData").Range("AK2").Value & ", " & _
        ReplaceIllegalCharacters(ThisWorkbook.Sheets("OtherData").Range("AK8").Value, "-") & ", " & _
        ThisWorkbook.Sheets("OtherData").Range("AU18").Value & ".docx"

    End With

    WordDoc.Close
    WordApp.Quit
    Set WordDoc = Nothing
    Set WordApp = Nothing

ErrorHandlerEndExecution:

    WordDoc.Close
    WordApp.Quit
    Set WordDoc = Nothing
    Set WordApp = Nothing

    'Application.ScreenUpdating = True
End Sub

Запуск этого кода дает ошибку:

enter image description here

Указывает на WordDoc.Close после ErrorHandlerEndExecution:.

Если я правильно понимаю, в случае любой ошибки следует перейти к разделу ErrorHandlerEndExecution: и выполнить действия ниже этой строки. Иначе это не следует учитывать? В чем проблема в текущем коде и как ее исправить?

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