엑셀 vba 관련 질문입니다. (응용범위문제)
2016.05.12 11:27
책보고 배운건아니고 F1키 눌렀더니 설명이 잘 되어있길레 마구잡이로 만들어 썼었네요
처음 vba를 써봤을때 정말 매직이더군요 감동 ㅎㅎ
1. 엑셀 Vba를 활용해서 문제은행프로그램을 만들수 있을까요? 단 아래한글과 연동해서요 아래한글을 불러와서 묶어서 다른 화일을 생성하는것 같은거요
거창할필요는 없습니다 개인적으로 이용해보려구요
2. 가능하다면 어떤 책 또는 문서를 참조해야할까요
코멘트 14
-
제이크스태덤
05.12 12:58
-
즐거운하루
05.12 14:02
한글문서 몇개를 병합하여 하나의 한글문서 만들기였습니다 -
제이크스태덤
05.12 14:55
네, 예상 한 것 (zip 파일로 묶기 혹은 여러 HWP 합치기) 중 하나이긴 한데....한글에서 HWP 합치기가 지원이 되나요?
아니면 한글에서 별도의 툴을 제공하는 건지? 이건 VBA 의 영역이 아닐 것 같습니다.
-
즐거운하루
05.12 15:23
아 hwp에 외부프로그램같은걸 찾아야겠네요
그걸 vba에서 동작시켜 병합하기 이런쪽으로 가야겠네요 -
별날다
05.12 19:36
정확히 어떤 처리를 원하시는 건지... 업무 흐름이 명확하지 않네요.
한-글 파일을 이용하신다고 했는데요.
1. 한-글 파일에 담긴 내용을 VBA에서 읽어서 조합하여 다시 다른 이름의 한-글 파일로 저장하신다는 건가요?
2. 복수의 한-글 파일을 서로 합쳐서 새로운 한-글 파일을 만드는 건가요?
1. 의 경우는 VBA에서 한-글 파일을 열어 읽고, 쓰기가 안되는 것으로 압니다.
하지만... 만약, 한-글 파일을 읽어서 내용을 text 파일처럼 VBA가 다룰 수 있는 파일로 저장하는 프로그램이 있으면,
1) text 파일로 저장해서 VBA에서 이 text 파일을 읽어서 내용을 조합한 다음,
2) 다른 이름의 text 파일로 저장하고,
3) VBA에서 저장된 text 파일을 한-글 파일로 변환하는 프로그램을 실행시키면 됩니다.
2. 이건 한-글 파일을 서로 합쳐서 새로운 한-글 파일로 만드는 별도의 프로그램이 있어야 합니다.
-
즐거운하루
05.12 20:25
2번정도면 될듯한데 별도의 프로그램이 있어야 겠네요 ㅜㅜ 한컴에서 병합? 툴 같은거 제공하는게 있음 (도스?.인터프리터방식?) 가능하지 싶은데
구버전엔 있었으려나 검색중입니다.
기존 상용 문제풀이 프로그램들을 보면
미리저장된 아래한글 문제와 풀이들을 병합해서
한장의 시험지를 만들어내더군요
거창하게는 아니고 개인적으로 해보려했는데
vba가 접근성이 좋아서 가능한가 문의해봤습니다 -
별날다
05.12 21:01
잘은 모르지만...
기존의 한-글 문서를 활용하는 문제은행들은...
한-글 파일을 열어서 내용을 이용하는 방식일 겁니다.
왜냐하면, 한-글 문서파일에 대한 형식과 API 등이 공개되어 있는 것으로 압니다.
그것을 이용해서 개발했을 겁니다.
지금의 문서파일들은 xml 방식이 아니면, 옛날 도스와 텍스트 문서 시절처럼 파일을 그냥 자르고 붙이고 하면 깨집니다.
게다가 한-글 문서 형식이 최근에 와서야 xml 방식이고 한97 등은 그래픽 이미지 방식이기 때문에, 일방적으로 자르고 붙이고 하면 안되거든요.
버전 별로 호환성을 가져가려면, 읽고 쓰는 방식을 써야 합니다.
-
즐거운하루
05.12 22:51
답변감사합니다.
제가 읽고 쓰기까지는 구현할 능력이 없기에
단순하게 만약 병합툴이 있다면
Tool.exe a.hwp b.hwp to c.hwp
뭐 이렇게 외부명령어를 이용
한글화일을 합쳐주면 좋겠는데
제가 설명이 부족했나봅니다
단순하게 엑셀에서 몇번 몇번화일의 제목만 선택해서 실행하면 여러개의 문서를 하나의 문서로 만들어주면 될듯한데요 쉽지않아보이네요 -
제이크스태덤
05.13 03:34
혹시 한글 파일을 활용하는 문제은행들이 어디인지 좀 알려주실 수 있을까요?
어떻게 하는지 궁금하긴 하네요.
-
즐거운하루
05.13 07:35
별날다님 말씀처럼 요즘 프로그램은 열어서 조작히는것 같습니다. Db를 생성해서 조작하는것 같습니다.
옛날에 프로그램(문제집 출판사에서 주던 부록시디같은데 들어있던거)은 폴더에 문제 hwp와 답 hwp화일이 수백개씩 저장되어있는거로 봐서는 제 생각에 병합하는거로 알았습니다(제 생각에)
이름같은게 생각이 안나서 ㅜㅜ 일단 댓글달고 찾아보겠습니다 ㅜㅜ -
별날다
05.13 08:52
저도 문제은행 관련 일을 해보지 않아서 어디에 그런게 있는지는 모르겠네요..ㅋㅋ
한-글 2.5까지는 도스 환경에 최적화되어 있어서, 한-글 문서가 이미지 방식이 아닌 텍스트 형식 파일이었습니다.
그래서 문서의 내용은 ASCII Code나 EBCDIC Code로 저장되고, 이 문서가 한-글 문서인지 아닌지를 분별하는 Header가 각 한-글 문서 앞에 있어서, 이 Header만 날리면, 얼마든지 문서를 일반적인 DOS 명령인 'copy a+b c' 로 합칠 수 있었죠. 혹은 split 라는 third party 무른모를 쓰거나 말이죠.
물론, header를 없애는 프로그램은 제작해야 했지만, 이건 basic 언어로도 만들 수 있을 정도로 간단하거든요.
만드는 김에 합치는 기능을 넣으면 더 간단했고..당시 제 주변에서 그런 걸 직접 하신 분들에게 들었습니다.
그런데, 이후로는 image 형식으로 바뀌었고... 2000년대 들어서 마소나 다른 곳에서 xml을 채용한 뒤에도 한글은 계속 이미지 형식이었다가... 한-글 2010이었나? 하여간 xml 방식을 채용하기 시작한 지 몇 년 안 된 것으로 압니다.
인터넷을 찾아보니 '여러 문서 합치기'라는 기능이 한-글 편집기에 들어가 있기는 한데요. 이걸 외부에서 script 명령으로 실행하는 것이 아니고, 일단, 첫 번째 한-글 문서를 열고 그 안에서 단축키나 마우스로 실행하는 거네요. 즉.. 수동으로 밖에 안된다는 거죠.
아니면, 앞서 말씀드린 대로, 직접 개발하거나 말이죠.
별 내용 아니지만, 도움이 되었기를 바랍니다.
-
즐거운하루
05.13 10:18
예전에 도스명령어처럼 프롬프트? 상에서 옵션줘서 생성할수있음 좋을텐데 비전문가 입장에선 쉬워보이진 않네요^^
답변감사합니다. -
VBA 의 함정을 조심하세요.
엑셀 VBA 는 다른 말로 제한되어 있는 VB6 입니다.
2000년대부터 나온 VB.net 과는 크게 다릅니다.
전문적으로 배울 생각이 없고 일상 업무만 한다면야 VBA 로 100% 처리 가능합니다.
하지만 프로그래밍의 영역으로 들어가면 차라리 VB.net 으로 전문적으로 배우는것이 좋습니다.
다른 파일 로드하고 처리하고 뭐 그런 전지전능한(?) 것들 말이죠.
그리고 VB.net 배우면 다른 VC++ 같은 것도 쉽게 배울 수 있게 되고요. 여러모로 사다리 타는 겁니다.
-
즐거운하루
05.14 22:04
넵 명심하겠습니다^^
1. 만들수는 있겠지만, 다른 파일 생성한다는 게 무슨 말인지는 막연해서 대답도 아마 구현도 좀 어려운 부분 같습니다.
2. VBA 안다는 전제하에 VBA 활용 관련 된 책을 보셔야 겠지만, 1 번 뒷 내용에서 유추해보면 좀 난이도 있는 VBA 가 될 것 같기는 하네요.