2017-09-17 16 views
0

이 오류는 "텍스트 양식 필드"("개발자> 컨트롤> 레거시 양식"(MS Office 2013))가있는 모든 문서에 Name 속성을 명시 적으로 작성하여 얻은 것입니다. Selection.Paste 운영 -VBA Word - 중복 텍스트 양식 필드 이름 변경

Sub EditCopiedFormField() 
    Selection.MoveDown Unit:=wdLine, Count:=4, Extend:=wdExtend 
    Selection.Copy 
    Selection.MoveDown Unit:=wdLine, Count:=1 
    Selection.Paste 
    ActiveDocument.FormFields(3).Name = "ID999" 
End Sub 

enter image description here

enter image description here

Selection.CopyActiveDocument.FormFields(i).Name 필드 쓸 수 있습니까?

일부 "텍스트 양식 필드"를 복사하여 붙여 넣은 후 Name (UI 대화 상자의 북마크 필드) 속성을 읽는 데 문제가 없습니다. 그러나 양식 필드가 바뀌기 때문에이를 쓸 수 없습니다. 표준 오류를 수신) 복사 한 후 중복 :

Method 'Name' of object 'FormField' failed

예를 들어, 내가 같은 Name 두 개의 "텍스트 양식 필드"를 가지고 : "ID001" 그들을 포함 범위를 복사 한 후. 양식을 두 번 클릭하여 복제물을 편집하면 사본의 Name ("Bookmark")이 즉각적으로 지워집니다 : "". 더 "즐겨 찾기"는 UI의 메뉴 "링크> 책갈피"를 통해 중복되지 않는 것을주의의 Name 변경하기 전에 "즐겨 찾기"를 추가하려고

:

`ActiveDocument.Bookmarks.Add("ID999")` 

상황을 변경하지 마십시오.

중복 된 이름을 변경하려면 어떻게해야합니까?

답변

1

난이도를 복제 할 수 없어 다음 테스트를 제안했습니다.

Private Sub ListFields() 

    Dim Fld As FormField 
    Dim i As Integer 

    With ActiveDocument 
     For Each Fld In .FormFields 
      i = i + 1 
      Debug.Print i, Fld.Name, Fld.Result 
     Next Fld 
    End With 
End Sub 

, 비주얼 베이직 편집기의 직접 실행 창에 귀하의 FormFields의 목록을 인쇄합니다이 코드를 실행 인덱스, 이름과 결과를 제공합니다. 이름을 변경하려는 필드의 색인 번호로 주소를 지정하십시오. 당신은 당신이 바라는 모든 것을 바꿀 수 있어야합니다.

+0

을위한 전 = I0 그런 Fld.Name = "ID999"최종 If'를하는 경우 중복 양식, 나는 여전히 같은 오류가 발생했습니다. – hyprfrcb

+0

그것은 의도가 아니 었습니다. 이 코드는 색인 번호가있는 필드의 목록을 인쇄합니다. 이름을 변경하려면'ActiveDocument.FormFields (x) .Name = "ID999"'를 실행해야합니다. 여기서 x는 변경하려는 필드의 이름을 식별하는 인쇄 된 목록의 색인 번호입니다. – Variatus

+0

예, 그랬습니다. 나는 그 목록에서 나쁜 것을 찾아 내지 못했습니다. 'Name'필드를 직접 호출하면 필드가 복제 될 때 오류가 발생합니다. 내가 몇 시간 전에 쓴 편집을 확인해. – hyprfrcb

0

감사 The Anchorage 웹 사이트에이 코드는 트릭 할 나타납니다`라인을이 코드를 실행하고, 추가 한 후

ActiveDocument.FormFields(i).Select 
With Dialogs(wdDialogFormFieldOptions) 
    .Name = "ID999" 
    .Execute 
End With