我有一个Word文档,其中包含大约4000个表单字段,我必须将其导出到数据库中。问题是4000个字段中没有一个在“书签”字段中有信息,因此我无法获取存储在其中的信息。
我正在尝试创建一个宏来帮助编写书签(FormField.Name)的过程,但无法设法做到正确。问题是我想要更改用户选择中包含的FormFields的名称,并且只更改它们。我设法找到了这个解决方案:
Sub Macro2()
Dim myFile As String
Dim fnum As Integer
Dim sFileText As String
Dim currentField As FormField
myFile = "c:\testMacro.txt"
fnum = FreeFile()
Open myFile For Input As fnum
For Each currentField In Selection.FormFields
Input #fnum, sFileText
With currentField
.StatusText = sFileText
.OwnStatus = True
End With
currentField.Select
Application.WordBasic.FormFieldOptions Name:=sFileText
Next currentField
End Sub
但它不起作用,因为在For Each循环中更改了Selection对象,之后它只包含选择的第一个FormField。
所以这是我的问题,有没有办法保存当前选择并在更改后加载它。
我试过了:
Dim mySelection as Selection
Set mySelection = Selection
但是如果我更改了Selection,变量mySelection也会改变(这很正常......)而且我没有找到任何克隆对象的方法。
有人知道如何做到这一点吗?
由于
答案 0 :(得分:10)
为“副本”使用不同的参考:
Dim selBkUp As Range
Set selBkUp = ActiveDocument.Range(Selection.Range.Start, Selection.Range.End)
或使用副本:
Dim selBkUp As Range
selBkUp = Selection.Range.Duplicate
答案 1 :(得分:0)
Selection.Range
会自动重复,因此您可以执行以下操作:
Dim selBkUp As Range
Set selBkUp = Selection.Range