我有一个Word文档,可以通过系列为书籍创建索引卡。在每一页上,有关一本书的信息。有时必须将两个字段交换为特定项目。因此,对于我的同事来说,只需单击一下,便可以节省很多工作。我有编程经验,但没有太多Office,也没有VBA。 是否可以做下面的事情? :
Pseudo code:
dim temp as string
dim temp2 as string
select first textbox on active page
temp = select.Text
select second textbox on active page
temp2 = select.Text
select.Text = temp
select first textbox on active page
select.Text = temp2
任何想法都可以使用。尤其是是否有可能选择单个(活动)页面的第一和第二文本框。
答案 0 :(得分:-1)
可能有更好的方法来完成此操作,但是我发现文字中的文本框确实很痛苦。
在这里,我们设置框的名称,如何确定不确定的顺序(也许使用标题进行检查)或定位点。 ID属性不是索引,因此我们不能使用它。
Sub Rename()
Dim textbox As Object
Dim iter As Long
iter = 1
For Each textbox In ActiveDocument.Shapes 'I'm not sure how to set names manually
textbox.Name = "TextBox " & iter
iter = iter + 1
Next
End Sub
假设您按照显示顺序命名了这些框:
Sub TextSwap()
Dim targetbox As Long
Dim val1 As String
Dim val2 As String
targetbox = InputBox("Enter an Integer relating to the position of the textbox")
val1 = ActiveDocument.Shapes("TextBox " & targetbox).TextFrame.TextRange.Text
val2 = ActiveDocument.Shapes("TextBox " & (targetbox + 1)).TextFrame.TextRange.Text
ActiveDocument.Shapes("TextBox " & targetbox).TextFrame.TextRange.Text = val2
ActiveDocument.Shapes("TextBox " & (targetbox + 1)).TextFrame.TextRange.Text = val1
End Sub
您需要检查输入以确保没有错误。我也不相信这些文本框的名称是可靠的,但是只要您没有做任何太疯狂的事情,它就应该起作用。