2016-06-20 3 views
0

Я создаю сценарий Excel VBA для отправки отчетов по электронной почте. Я сделал следующую функцию для проверки вложения, прежде чем включать его в письмо.Чтение строки из документа Word

Функция, приведенная ниже, откроет документ слова, проверьте, соответствует ли первая строка идентификатору клиента и возвращает bool.

Он работает, однако, когда я читаю данные из Word, он содержит некоторые скрытые цитаты в тексте.

Хотя обе строки - 123a, когда я вставляю их в другой текстовый редактор, я вижу тот, который я читаю из Word как «123a». Если я напечатаю их с помощью MsbBox, оба значения равны 123a.

Function ValidateAttachment(attachmentURL As String, customerID As String) As Boolean 

    Dim oWord As Word.Application 
    Dim oWdoc As Word.Document 

    Set oWord = CreateObject("Word.Application") 

    Set oWdoc = oWord.Documents.Open(attachmentURL) 

    If StrComp(oWdoc.Paragraphs(1).Range.Text, customerID, vbTextCompare) = 0 Then 
     ValidateAttachment = True 
    Else 
     ValidateAttachment = False 
    End If 

    oWord.Quit 

    Set oWord = Nothing 

    Exit Function 
End Function 

Это то, что я вижу, когда пишу оба результата в обычные ячейки. Даже я делаю простую формулу IF для проверки равенства, она не работает.

enter image description here

+0

Съемка в темноте, но я озадачен. Как насчет того, чтобы вы сначала назначили oWdoc.Paragraphs (1) .Range.Text для переменной, а затем выполните сравнение. –

+0

Тот же вывод, и что делает это еще более странным, если я вставляю точку останова и наводил переменную, я вижу правильное значение – Marcelo

+0

Как насчет If oWdoc.Paragraphs (1) .Range.Text = customerID Then ... –

ответ

0

Я нашел, как иметь дело с невидимыми кавычками.

Используя это сделал трюк:

Application.WorksheetFunction.Clean() 

И вот окончательный код:

Function ValidateAttachment(attachmentURL As String, customerID As String) As Boolean 

    Dim oWord As Word.Application 
    Dim oWdoc As Word.Document 

    Set oWord = CreateObject("Word.Application") 

    Set oWdoc = oWord.Documents.Open(attachmentURL) 

    Dim x As String 
    x = "123a" 

    Application.Sheets(1).Columns(3).Rows(2) = Replace(oWdoc.Paragraphs(1).Range.Text, Chr(34), "") 

    If StrComp(Application.WorksheetFunction.Clean(oWdoc.Paragraphs(1).Range.Text), customerID, vbTextCompare) = 0 Then 
     ValidateAttachment = True 
    Else 
     ValidateAttachment = False 
    End If 

    oWord.Quit 

    Set oWord = Nothing 

    Exit Function 
End Function 
0

Try:

If StrComp(Replace(oWdoc.Paragraphs(1).Range.Text,chr(34),""), customerID, vbTextCompare) = 0 Then 
+0

Тот же вывод, вставляющий результат в блокнот, возвращает 123a «123a » Пока Excel и MsgBox показы 123a – Marcelo