vba - Microsoft word:将文本从多个文本框中复制到选择表中
问题描述
我正在尝试仅从 word 文档中的多个文本框中复制粗体文本,并将其粘贴到不同行表中的选定列中。例如,文本框 1 中的粗体文本应进入表格的第 2 行和第 2 列。同样,文本框 2 中的文本应该进入表格的第 3 行和第 2 列。这应该一直持续到所有文本框都被读取和复制。
但是我正在尝试的代码是从所有文本框中复制所有文本并将其粘贴到不同的行中。我无法弄清楚如何从文本框中仅提取粗体文本并将文本从消息框 1 粘贴到第 1 行,将消息框 2 粘贴到第 2 行,依此类推。
我是 VBA 新手,因此我们将不胜感激任何帮助。
我自定义的代码如下:
Sub Copytextfromtextbox()
Dim nNumber As Integer
Dim strText As String
Dim i As Long
With ActiveDocument
For nNumber = 1 To .Shapes.Count Step 1
If .Shapes(nNumber).Type = msoTextBox Then
strText = strText & .Shapes(nNumber).TextFrame.TextRange.Text & vbCr
For i = 2 To nNumber Step 1
With ActiveDocument.Tables(5).Cell(Row:=i, Column:=2).Range
.Delete
.InsertAfter Text:=strText
End With
Next
Else
MsgBox ("There is no textbox.")
End If
Next
End With
End Sub
解决方案
您究竟需要什么尚不清楚,举个例子说明文本框的内容可能是什么以及应该将哪些部分转移到表格单元格中会有所帮助。以下将做我理解的要求:
循环文档中的所有形状。如果 Shape 是 TextBox,则定位粗体文本并将其转移到特定表格的第二列,在文档中文本框位置的行索引 +1(第 2 行第一个,第 3 行第二个,等等)。
请注意,我为代码使用的单词“事物”添加了对象变量,例如 a Document
、 a Table
、 aRange
和 a Shape
。这更有效,更容易遵循并且不太容易使用错误的东西。
使用 循环形状更清晰For Each
。
为了拾取粗体文本,Word 的Find
功能是高效的。这是在TextRange
文本框上执行的。(有关使用的更多信息,Find
请参阅 Word VBA 语言参考以及在 Internet 上的此处和其他地方使用它的许多贡献。作为用户在 Word 应用程序中使用 Word 的“高级查找”并记录宏也是有指导意义。)
每次找到文本框时,i
都会递增以标识表格行。
Sub Copytextfromtextbox()
Dim nNumber As Integer
Dim strText As String
Dim i As Long
Dim doc As Document
Dim tbl As Table
Dim rng As Range
Dim shp As Shape
Set doc = ActiveDocument
Set tbl = doc.Tables(5)
i = 0
With doc
For Each shp In .Shapes
If shp.Type = msoTextBox Then
Set rng = shp.TextFrame.TextRange
With rng.Find
.Font.Bold = True
.Wrap = wdFindStop
.Execute
strText = rng.Text
End With
i = i + 1
With tbl.Cell(Row:=i + 1, Column:=2).Range
.Delete
.InsertAfter Text:=strText
End With
Else
MsgBox ("There is no textbox.")
End If
Next
End With
End Sub
推荐阅读
- pug - 如何在 pug 中添加 css 文件链接
- flutter - 如何在颤动中将颜色应用于多色 svg?
- mysql - Mysql JSON EXTRACT 不适用于大键
- javascript - 等待 3rd 方插件 $(...).click() AJAX 调用完成
- javascript - 如何检查是否从 Web 浏览器安装了应用程序?
- html - 网格元素不会垂直拉伸
- json - 从 json 文件中读取特定对象的一个值
- python - 使用 tensorflow/pytorch 进行土地预测的多波段图像
- angular - angular firestore 没有导出的成员 DATABASE_URL
- c# - LocalReport 在通过 Process.Start 调用时无法呈现