Как я могу прочитать текстовые поля таблицы Excel, используя vb.net (пытаясь автоматизировать процесс, используя код активности uipath) - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь получить значения из Excel TextBoxes с помощью VB.NET, но все идет не так. (ошибки типа: «« Формы »не являются членами Interop» ИЛИ «TextBos не является интерфейсом»)

Есть идеи?

Вот мой код:

Dim xlApp As Application
Dim xlWorkBooks As Workbooks 
Dim xlWorkBook As Workbook 
Dim xlWorkSheet As Worksheet 
Dim xlWorkSheets As Sheets 

Using Microsoft.Vbe.Interop.Forms.TextBox

    Dim tb As Forms.TextBox

    xlApp = New Application

    xlApp.DisplayAlerts = False

    xlWorkBooks = xlApp.Workbooks

    xlWorkBook = xlWorkBooks.Open("C:\Users\pw02318\Documents\UiPath\Accese\exemplu_formular.xlsm")

    'xlApp.Visible = True

    xlWorkSheets = xlWorkBook.Sheets

    xlWorkSheet = CType(xlWorkSheets("New Form"), Worksheet)

    For Each  shp As Shape In xlWorkSheet.Shapes

        Dim oo As OLEObject = CType(xlWorkSheet.OLEObjects(shp.Name), OLEObject)
        tb = CType(oo.Object, Microsoft.Vbe.Interop.Forms.TextBox)
        console.WriteLine(oo.Name.ToString + tb.Text)

    Next shp

 End Using

1 Ответ

0 голосов
/ 03 июля 2019

Вы можете прочитать свой файл Excel и поместить его в устройство чтения данных, используя ExcelDataReader.

сначала добавьте OpenXml.Excel.Data к вашим ссылкам и импортируйте его в свой код, затем вы можете написать так:

    logDestination = Environment.CurrentDirectory & "\log.txt"

    Dim filePaths As String() = Directory.GetFiles(path, "*.xlsx")

    If filePaths.Length > 1 Then
        File.AppendAllText(logDestination, DateTime.Now & " -----> There Is More Than One xlsx File In The Path Folder" + Environment.NewLine)
    ElseIf filePaths.Length = 0 Then
        File.AppendAllText(logDestination, DateTime.Now & " -----> There Is No xlsx File In The Path" + Environment.NewLine)
        Environment.[Exit](0)
    End If

    Dim dt = New DataTable()

    Dim reader As var = New ExcelDataReader(filePaths(0), 1, True)

    dt.Load(reader)
...