как сказать, если .selection.find нашел что-то в Excel VBA - PullRequest
0 голосов
/ 05 ноября 2018

Я могу использовать этот код, чтобы найти предложение в указанном пользователем файле слов и вставить текст после этого предложения. Проблема в том, что если ожидаемое предложение не существует в файле слова, текст будет вставлен в начало файла слова. Что мне нужно, если ожидаемое предложение не найдено, перейти к обработчику ошибок. Как изменить код?

[обновлено] Код ниже работает:

Dim WordApp As Object, WordDoc As Object
Dim FullName As String: FullName = Sheet5.Cells(7, 5).Value

Set WordApp = New Word.Application

With WordApp
    .Visible = True

    Set WordDoc = .Documents.Open(FullName)

    .ActiveDocument.Select
    With .Selection
        With .Find
            .ClearFormatting
            .MatchWholeWord = True
            .MatchCase = False
            .Text = "There is one electric heater."
            .Execute
        End With
        If .Find.Found Then
        .Collapse Direction:=wdCollapseStart
        .TypeParagraph
        .ParagraphFormat.Alignment = wdAlignParagraphLeft
        .MoveEnd wdLine, 1
        Sheet3.Range("G2").Copy
        .PasteExcelTable False, False, False
        Sheet2.Range("A1", "B10").Copy
        .PasteExcelTable False, False, False
        Else
        MsgBox "No electric heater reference found.", vbExclamation
        End If
    End With
    .Activate
End With

1 Ответ

0 голосов
/ 07 ноября 2018

Попробуйте что-нибудь вроде:

Dim WordApp As Object, WordDoc As Object, WordRng As Object
Dim strFlNm As String: strFlNm = Sheet5.Range("D6").Value
Set WordApp = CreateObject("Word.Application")
With WordApp
  .Visible = True
  Set WordDoc = .Documents.Open(strFlNm)
  With WordDoc.Range
    With .Find
      .ClearFormatting
      .MatchWholeWord = True
      .MatchCase = False
      .Text = "There is one electric heater."
      .Execute
    End With
    If .Find.Found = True Then
      .InsertAfter vbCr
      .Collapse 0 ' wdCollapseEnd
      .ParagraphFormat.Alignment = 0 'wdAlignParagraphLeft
      Sheet3.Range("G2").Copy
      .PasteExcelTable False, False, False
      .InsertAfter vbCr
      Sheet2.Range("A1:B10").Copy
      .Collapse 0 ' wdCollapseEnd
      .PasteExcelTable False, False, False
    Else
      MsgBox "No electric heater reference found", vbExclamation
    End If
  End With
  .Activate
End With
...