중복으로 지정된 필드 이름에 대해서 질문이 있습니다.

1페이지에 표가 있고, 그 안에 특정 필드 이름을 가지고 있는 셀이 존재합니다.
2페이지에도 동일한 표가 있고 그 안에 특정 필드 이름을 가지고 있는 셀이 존재합니다.

문제점

  1. 위에 선언된 특정 필드 이름이 1페이지 2페이지 중복된다는 점(동일하다 → ex) 1page 특정 셀의 필드 이름: test
    2page 특정 셀의 필드 이름: test)
  2. HwpCtrl.MoveToField(“test”, true, true, false) 이렇게 접근한 후에 셀의 크기를 늘리는 명령을 실행
  3. 저의 생각으로는 두 필드(중복된 필드 이름을 가지고 있는)가 동시에 조작이 되어야 한다고 생각했으나
    첫번째 페이지에 있는 셀만 조작이 가능했음

질문 목록

  1. 특정 페이지로 이동하는 한글 명령어가 존재하는지?
  2. 운영 중에 있는 프로젝트이므로, 필드 명을 바꾸기 어려운 점.
  3. 중복된 필드 명을 유지하면서 동시에 둘을 컨트롤할 수 있는지

image

1개의 좋아요

안녕하세요.

MoveToField() 함수는 중복된 필드명이 있을 경우 첫번째 필드로 이동합니다.

위 코드처럼 작성할 경우 첫번째 페이지의 표로 이동한 후, 이후 동작을 발생시킵니다.

중복된 필드명 중에서 특정 순번의 필드로 이동하고 싶을 경우에는 MoveToField() 함수를 호출하실때 필드명을 아래와 같이 전달하시면 됩니다.

MoveToField("필드명{{n}}", true, true, true);

예를들어 "test"란 필드를 가진 표가 2개가 있고, 이중 두번째 표로 이동할 경우에는 다음과 같이 호출하면 됩니다.

HwpCtrl.MoveToField("test{{1}}", true, true, false);

문서내 동일한 필드가 몇개나 존재하는지 확인하시려면 아래와 같이 GetFieldList()함수를 사용하시면 됩니다.

HwpCtrl.GetFieldList(2, 0);

GetFieldList()함수의 자세한 사용법 및 옵션은 아래를 참고하시기 바랍니다.

2개의 좋아요

답변 정말 감사합니다.!~

혹시 셀을 선택한후 옆의 셀과 병합하는 옵션도 있나요?

1개의 좋아요

안녕하세요.

HwpCtrl.Run("SelectCtrlReverse");				// 역방향으로 탐색하여 개체(여기서는 표)를 선택
HwpCtrl.Run("ShapeObjTextBoxEdit");		// 개체내 Edit영역(여기서는 첫번째 셀)로 이동
HwpCtrl.Run("TableCellBlock");					// 셀블록 상태 (이동형)
HwpCtrl.Run("TableCellBlockExtend");		// 셀블록 확장 상태 (확장형)
HwpCtrl.Run("TableRightCell");					// 셀을 오른쪽으로 이동 - 확장형이므로 첫번째 셀과 두번째 셀이 모두 선택상태
HwpCtrl.Run("TableMergeCell");				// 셀병합

각각의 단계를 테스트 해보시기 바랍니다.

2개의 좋아요