Чтение определенного столбца с листа Excel на основе макроса MS-word VBA

#excel #vba #ms-word

#excel #vba #ms-word

Вопрос:

Я хотел бы выделить конкретные слова, приведенные в определенном столбце листа Excel в документе word.

У меня есть рабочее решение (см. Ниже), которое считывает слова из файла word, но я не могу запустить его, чтобы сделать то же самое, используя определенный столбец из файла Excel. По сути, я хочу делать то, что делает следующий код python (но для VBA):

 import pandas as pd
all = pd.read_excel("list.xlsx")
docRef = all(all["MY COLUMN NAME"])
  

… и docRef следует использовать в приведенном ниже коде. Я просто не могу запустить его…

 Sub highlightWords()

Dim sCheckDoc As String
Dim docRef As Document
Dim docCurrent As Document
Dim wrdRef As Object

sCheckDoc = "list.docx"
Set docCurrent = Selection.Document
Set docRef = Documents.Open(sCheckDoc)
docCurrent.Activate

Options.DefaultHighlightColorIndex = wdRed
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Replacement.Highlight = True
    .Replacement.Text = "^amp;"
    .Forward = True
    .Format = True
    .MatchWholeWord = True
    .MatchCase = False
    .MatchWildcards = False
End With

For Each wrdRef In docRef.Words
    If Asc(Left(wrdRef, 1)) > 32 Then
        With Selection.Find
            .Wrap = wdFindContinue
            .Text = wrdRef
            .Execute Replace:=wdReplaceAll
        End With
    End If
Next wrdRef

docRef.Close
docCurrent.Activate
End Sub
  

Код, измененный здесь.

Комментарии:

1. Имеющийся у вас код выполняет поиск в файле Word (как вы указали). Можете ли вы предоставить код, который вы пробовали для файла Excel? мы можем помочь вам с любыми возникающими у вас проблемами

2. Ну, я много чего перепробовал — в простейшей версии просто заменил «list.docx «с моим»list.xlsx » файл (при условии, что файл Excel также является документом, и все средства чтения наследуются от одного класса). Затем замена документа на Workbook (нашел это в Google), но там указано, что тип не определен, требуется объект, 404 и т.д. В принципе, мне просто нужны 3 строки кода pyhton, запущенного в VBA (где я, к сожалению, не очень знаком с синтаксисом)

Ответ №1:

Чтобы управлять Excel из Word, вы должны установить ссылку на библиотеку Excel в редакторе Word VBA: Инструменты, ссылки, прокрутите вниз до Microsoft Excel и отметьте его.

Затем вам нужно открыть Excel и загрузить рабочую книгу

    Dim XL as new Excel.Application
   Dim wb as Excel.Workbook
   Set wb = xl.Workbooks.open("path and name of file list.xlsx")
   For Each wordref in wb.Sheets(1).Range("a1:A" amp; wb.Sheets(1).usedrange.rows.count)