问题描述
我正在使用保存为 .docx 的受密码保护的完整 Word 模板,但我没有密码。
我想将所有表单域输入导入 Excel。通过指示文本在表格中的位置来导入文本有效,但我找不到导入下拉值的方法。这是我到目前为止的代码:
Sub extractData()
Application.ScreenUpdating = False
Dim wd As New Word.Application
Dim doc As Word.Document
Dim sh As Worksheet
Dim fileName As Variant
fileName = Dir("C:\Users\...\*.docx")
While fileName <> ""
Set doc = wd.Documents.Open(ActiveWorkbook.Path & "\" & fileName,AddToRecentFiles:=False,Visible:=False)
Set tbls = doc.Tables
Set sh = ActiveSheet
Dim FmFld As Word.FormField
wd.Visible = False
lr = sh.Cells(Rows.Count,1).End(xlUp).Row + 1
sh.Cells(lr,1).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(1).Cells(1).Range.Text)
sh.Cells(lr,2).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(1).Cells(2).Range.Text)
sh.Cells(lr,3).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(2).Cells(1).Range.Text)
sh.Cells(lr,4).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(2).Cells(2).Range.Text)
sh.Cells(lr,5).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(3).Cells(1).Range.Text)
sh.Cells(lr,6).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(4).Cells(1).Range.Text)
sh.Cells(lr,7).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(6).Cells(2).DropDown.Value)
sh.Cells(lr,8).Value = Application.WorksheetFunction.Clean(tbls(1).Rows(6).Cells(3).Range.Text)
sh.Cells(lr,9).Value = doc.FormFields(15).DropDown.Value
doc.Close SaveChanges:=False
fileName = Dir()
Wend
wd.Quit
Set doc = nothing
Set sh = nothing
Set wd = nothing
Application.ScreenUpdating = True
End Sub
遗憾的是,下拉菜单“书签/名称”似乎不存在。第一个似乎是默认的“dropdown1”,但其他的没有命名,可能是因为被复制和粘贴。
我能够使用索引号导出下拉值,但这取决于人们是否添加了更多或更少的文本,并且我无法手动检查每个表单并计算在第一个表单之前有多少表单域下拉...这是在这个例子中起作用的:
sh.Cells(lr,7).Value = doc.FormFields(13).DropDown.Value
Word 表单中带有表单域的表格大致如下所示:
<html>
<head>
<style>
table,th,td {
border: 1px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px;
text-align: left;
}
</style>
</head>
<body>
<table style="width:100%">
<tr>
<td>Q1: text input 1</td>
<td colspan="2">Q2: text input 2</td>
</tr>
<tr>
<td>Q3: text input 3</td>
<td colspan="2">Q4: text input 4</td>
</tr>
<tr>
<td colspan="3">Q5: bullet point text inputs (approx. 5)</td>
</tr>
<tr>
<td colspan="3">Q6: bullet point text inputs (approx. 5)</td>
</tr>
<tr>
<td>text</td>
<td>text</td>
<td>text</td>
</tr>
<tr>
<td>text</td>
<td><b>Q7: dropdown 1</b></td>
<td>Q8: text input</td>
</tr>
<tr>
<td>text</td>
<td><b>Q9: dropdown 2</b></td>
<td>Q10: text input</td>
</tr>
</table>
</body>
</html>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)