Извлечение данных / элементов управления из Word в Excel - PullRequest
0 голосов
/ 19 июня 2019

В настоящее время у меня есть документ Word, который является анкетой.

Формат (всего 30 вопросов):

Имя:

1. Question
YES checkbox
NO checkbox
Comments

2. Question
YES checkbox
NO checkbox
Comments

Флажки и комментарии являются элементами управления.

То, что я пытаюсь сделать, это извлечь флажок и комментировать данные в Excel. Например,

1. Do you spend time under the sun?
YES checkbox is selected
Comments: I spend 2 days out of the week in the sun.

То, что я хочу отобразить в Excel, будет.

enter image description here

Каждый раз, когда выполняется макрос, он должен добавлять новую информацию ниже существующей записи (строки).

Я обычно использую Word и извлекаю данные из excel в word, но я никогда не пробовал этого.

Вот что я придумал:

Sub Macro1()
    Application.ScreenUpdating = False
    Dim lRow As Long, i As Long, j As Long, iCtr As Long, cBox As CheckBox, StrFlNm As String
    With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
        SendKeys "%n *.doc ~"
        If .Show = True Then
            StrFlNm = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    Application.Volatile

    For Each cBox In ActiveSheet.CheckBoxes
        If cBox.Value = 1 Then
            iCtr = iCtr + 1
        End If
    Next cBox
    CheckedCount = iCtr
End Sub

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

Активировал Microsoft Object и запустил новый код. Как только файл выбран, мне предлагают это сообщение.

enter image description here

1 Ответ

1 голос
/ 19 июня 2019

Первая половина вашего кода ничего не дает, кроме как дать вам имя файла. В этот момент Excel ничего не знает о содержании документа.
Здесь вам нужно будет открыть документ, и для этого вам понадобится ссылка на объектную модель Word. В разделе Инструменты - Ссылки выберите Библиотека объектов Microsoft Word nn .
Теперь Excel может работать с документами Word.

Сделайте что-то вроде этого:

Sub Macro1()
    Dim lRow As Long, i As Long, j As Long, iCtr As Long, cBox As ContentControl, StrFlNm As String

    With Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
        SendKeys "%n *.doc ~"
        If .Show = True Then
            StrFlNm = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With

    Application.Volatile

    Dim Doc As Word.Document
    Set Doc = Word.Documents.Open(StrFlNm)
    Debug.Print Doc.Range.ContentControls.Count

    For Each cBox In Doc.Range.ContentControls
        If cBox.Checked Then
            iCtr = iCtr + 1
        End If
    Next cBox
    CheckedCount = iCtr
    Doc.Close
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...