Свойство Range.Text, дающее странные результаты при извлечении значений из таблицы в Microsoft Word для использования в VB.NET - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь извлечь данные из таблицы, созданной в Microsoft Word (в которой есть только одна таблица), чтобы я мог повторно использовать документ Word и сохранять каждый экземпляр в виде файла PDF. Итак, я дошел до открытия файла слова из VB. net, но застрял, когда попытался проиндексировать значение из таблицы.

Когда я запускаю этот код, в окне сообщения отображается символ, похожий на ASCII, для ячейки, на которую ссылается ячейка (3,1), но на самом деле это числовое значение c из таблицы в MS word.

на самом деле он не работает с любым возможным индексом ячейки.

Может ли кто-нибудь помочь мне с правильной ссылкой на значения таблицы?

Это было бы очень признательно, спасибо.

'' '

Private Sub CateringApp_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim oWord As Word.Application
    Dim oDoc As Word.Document

    Try
        oWord = CreateObject("Word.Application")
        oWord.Visible = True
        oDoc = oWord.Documents.Add(Application.StartupPath & "\SampleInvoice.docx")

        'line of code that shows weird results when invoked
        MessageBox.Show(oDoc.Tables.Item(1).Cell(3, 1).Range.Text)

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

'' '

1 Ответ

0 голосов
/ 28 апреля 2020

Оказывается, что строка, которая дала странные результаты:

 MessageBox.Show(oDoc.Tables.Item(1).Cell(3, 1).Range.Text)

Дала странные результаты, потому что индекс item (1) действительно должен быть item (2). элементы обычно начинают индексироваться с 1, а не с 0, но по какой-то причине слово MS do c интерпретирует элемент управления пыльниками как Item (1), так что таблица становится item (2).

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