아래한글 오토메이션 머리말 꼬리말 수정

안녕하세요 C# 으로 아래 한글 개발 중인데
public void ModifyHeaderFooter()
{
try
{
if (hwp == null)
{
throw new Exception(“HwpObject null!”);
}

            // 머리말/꼬리말 편집 모드로 진입
            hwp.HAction.Run("HeaderFooterModify"); 이런식으로 사용 중인데 머리말 꼬리말 편집모드로 진입시에 바로 죽어 버리네요.. 방법 없을까요 ?

안녕하세요.

API로 머리말/꼬리말 수정하기 위해서는 머리말/꼬리말 조판부호 찾는 작업이 우선되어야 합니다.

편집-찾아가기 액션으로 머리말/꼬리말을 찾을 수 있을 것 같고
아래처럼 작성이 가능할 것 같습니다.

	// 찾아가기 - 조판부호 - 머리말 (26), 꼬리말(14)
	HAction.GetDefault("Goto", HParameterSet.HGotoE.HSet);
	with (HParameterSet.HGotoE)
	{
		HSet.SetItem("DialogResult", 26);
		SetSelectionIndex = 5;
	}
	HAction.Execute("Goto", HParameterSet.HGotoE.HSet);

	// 머리말/꼬리말 수정
	HAction.Run("HeaderFooterModify");

감사합니다.

여기서 SetSelectionIndex 값에 5를 주는 이유가 뭘까요 ? SetSelectionIndex 의 enum에 해당하는 값이 순차적으로 뭘 의미 하는지 알수 있을까요 ? API 가이드 문서에서 찾을수가 없어서요 …

여기서 SetSelectionIndex 값에 5를 주는 이유가 뭘까요 ? SetSelectionIndex 의 enum에 해당하는 값이 순차적으로 뭘 의미 하는지 알수 있을까요 ? API 가이드 문서에서 찾을수가 없어서요 …

안녕하세요,
SetSelectionIndex의 경우 대화상자에서 현재 선택되어 있는 Index 값입니다.
Goto 찾아가기 대화상자를 보면 아래와 같이 쪽, 구역, 줄, 스타일, 조판부호, 책갈피를 라디오 버튼으로 선택이 가능합니다.
쪽이 1로 시작하고 그다움부터 하나씩 늘어나는 방식입니다.
감사합니다 ^^

            // 찾아가기 - 조판부호 - 머리말 (26), 꼬리말(14)
            hwp.HAction.GetDefault("Goto", hwp.HParameterSet.HGotoE.HSet);
            hwp.HParameterSet.HGotoE.SetItem("DialogResult", 26);  // 26은 머리말, 14는 꼬리말
            hwp.HParameterSet.HGotoE.SetSelectionIndex = 5;  // 선택 인덱스 설정
            hwp.HAction.Execute("Goto", hwp.HParameterSet.HGotoE.HSet); 

현재 C# 코드인데 애초에 hwp.HParameterSet.HGotoE.SetItem(“DialogResult”, 26); // 26은 머리말, 14는 꼬리말 여기서 죽어 버리네요 …

안녕하세요. 답변이 늦었습니다.

HGotoE에는 SetItem 인터페이스가 없기 때문입니다.
그래서 아래와 같이 수정이 가능할 것 같습니다.

1. HGotoE는 DialogResult Property가 없음
그래서 SetItem 사용하신 것으로 보이는데 SetItem을 사용하고자 한다면
HSet를 가져와서 SetItem으로 지정해야 합니다.

hwp.HAction.GetDefault("Goto", hwp.HParameterSet.HGotoE.HSet);
//hwp.HParameterSet.HGotoE.SetItem("DialogResult", 26); 
hwp.HParameterSet.HGotoE.HSet.SetItem("DialogResult", 26); 
hwp.HParameterSet.HGotoE.SetSelectionIndex = 5;  // 선택 인덱스 설정
hwp.HAction.Execute("Goto", hwp.HParameterSet.HGotoE.HSet); 

2. 개인적으로 저는 액션 실행을 할 때 이 방식으로 선호하는 편입니다.
IDHwpAction action = hwp.CreateAction("Goto");
IDHwpParameterSet set = action.CreateSet();
set.SetItem("DialogResult", 26);
set.SetItem("SetSelectionIndex", 5);
action.Execute(set);

감사합니다.

안녕하세요, 답변 주신 내용을 정말 감사 합니다, 궁극 적으로 해야 하는건, 꼬리말에 전체 페이지수가 안맞아서 전체 페이지 수를 바꾸고 싶은데,

    private void ModifyHeaderFooterContent()
    {
        // 꼬리말 편집 모드로 전환            
        hwp.HParameterSet.HGotoE.HSet.SetItem("DialogResult", 14); // 14 꼬리말, 26 머리말
        hwp.HParameterSet.HGotoE.SetSelectionIndex = 5;  // 선택 인덱스 설정
        hwp.HAction.Execute("Goto", hwp.HParameterSet.HGotoE.HSet);
        // 머리말/꼬리말 수정
        hwp.HAction.Run("HeaderFooterModify");

        hwp.HAction.GetDefault("InsertFieldTemplate", hwp.HParameterSet.InsertFieldTemplate.HSet);
        hwp.HParameterSet.InsertFieldTemplate.Type = "InsertCpTpNo"; // 현재 페이지/전체 페이지 필드 삽입
        hwp.HAction.Execute("InsertFieldTemplate", hwp.HParameterSet.InsertFieldTemplate.HSet);

        // 3. 편집 완료 후 빠져나오기
        hwp.HAction.Run("Cancel");
    }

위 코드의

        hwp.HAction.GetDefault("InsertFieldTemplate",

블록 따옴표

         hwp.HParameterSet.InsertFieldTemplate.HSet);
        hwp.HParameterSet.InsertFieldTemplate.Type = "InsertCpTpNo"; // 현재 페이지/전체 페이지 필드 삽입
        hwp.HAction.Execute("InsertFieldTemplate", 
                                              hwp.HParameterSet.InsertFieldTemplate.HSet);  이부분에서 위와 같은 에러가 발생하는데  꼬리말 하단에 존재하는 페이지수 변경 하려면 어떻게 해야 좋을까요.. 전체 페이지수가 안맞아서요...ㅠ

안녕하세요 , 현재 지금 아래한글 2018에서 한글오토메이션을 활용해서 개발 중인데, 보여주신 이미지 와 같이 찾아가기 다이어 로그를 보려면 아래한글 2018에서 어디서 들어갈수 있을까요…? 상단의 보기나 입력 쪽 등등에도 안보여서요…

편집 > 찾기 > 찾아가기… 메뉴에 있습니다.

편집 > 찾기 > 찾아가기 기능으로 어떻게 꼬리말을 찾아 가는거죠 ?.. 동작 방식이 궁금합니다.

안녕하세요.

머리말/꼬리말은 컨트롤로 본문에 들어가있습니다.
이 컨트롤을 찾아가는 방식으로 동작하는데
보기>조판부호 기능을 켜면 컨트롤이 들어가 있는걸 확인가능합니다.

네… 답변 감사 드립니다.,

우선 제가 궁금한건
//// 꼬리말 편집 모드로 전환
hwp.HParameterSet.HGotoE.HSet.SetItem(“DialogResult”, 14); // 14 꼬리말, 26 머리말
hwp.HParameterSet.HGotoE.SetSelectionIndex = 5; // 선택 인덱스 설정
hwp.HAction.Execute(“Goto”, hwp.HParameterSet.HGotoE.HSet);

// 머리말/꼬리말 수정
hwp.HAction.Run(“HeaderFooterModify”);
위 내용으로 실행시에 찾기 팝업 화면이 나타 나는데, 찾기의 내용이 궁금합니다
(Ex 꼬리말 로 검색 되는지… , 머리말로 검색 되는게… 찾기의 검색내용이 궁금합니다 )

메시지박스 팝업에 대해서는 아래 정보 게시글을 참고하면 좋을 것 같습니다.

            int oldMode = hwp.SetMessageBoxMode(0x00010000);

            hwp.HAction.GetDefault("Goto", hwp.HParameterSet.HGotoE.HSet);
            hwp.HParameterSet.HGotoE.HSet.SetItem("DialogResult", 26);
            hwp.HParameterSet.HGotoE.SetSelectionIndex = 5;
            hwp.HAction.Execute("Goto", hwp.HParameterSet.HGotoE.HSet);

            hwp.SetMessageBoxMode(oldMode);

            hwp.HAction.Run("HeaderFooterModify");

            // 머리말의 전체 내용을 삭제하는 구문으로
            // 컨트롤하고자 하는 문서 상태에 따라 작성해도 되고 제거해도 됨
            hwp.HAction.Run("SelectAll");
            hwp.HAction.Run("Delete");

            // [전체 쪽 수] 컨트롤 삽입
            hwp.HAction.Run("InsertTpNo");

            // 머리말/꼬리말 닫기
            hwp.HAction.Run("CloseEx");

API 문서를 보면서 응용해보시면 좋을 것 같습니다.

감사합니다.