目前,我有一份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中显示。
每次运行宏时,都应在现有记录(行)下方添加新信息。
我通常使用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并运行了新代码。选择文件后,系统会提示我该消息。
答案 0 :(得分:1)
代码的前半部分只给您一个文件名而已。那时,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