본문 바로가기
C++ 200제/코딩 IT 정보

MFC 엑셀 하이퍼링크 추가 소스 (excel library 예제)

by vicddory 2017. 5. 25.

MFC 엑셀 하이퍼링크 추가 소스 (excel library 예제)


거두절미하고 MFC 엑셀 하이퍼링크 추가하는 소스부터 보시죠.


Excel Library 예제 소스 중 마지막 45번 라인이 MFC 엑셀에서 실제 링크를 추가하는 항목입니다.


인자 1. 링크가 걸릴 시트 영역

인자 2. 엑셀 파일 이름

인자 3. 링크 명령어

인자 4. 기본값. 그냥 쓰세요.

인자 5. 링크가 걸릴 시트 이름


인자 1과 5가 조금 겹치는데 엄연히 따지면 ... 좀 다르죠? 시트 이름과 시트의 셀 영역이니깐요. MFC 엑셀 소스 소개합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
_Application app;
Worksheets sheets;
Workbooks books;
_Workbook book;
 
// Start MFC Excel and get Application object.
if (!app.CreateDispatch("MFCExcel.Application"))
{
    uc1601("Couldn't start MFC Excel and get Application object.",TRUE);
 
    pMainWnd->ShowWindow(TRUE);
    return;
}
 
//Get a new workbook. MFC 엑셀
books = app.GetWorkbooks();
book = books.Open((LPCTSTR)strTargetPath,
    covOptional, covOptional, covOptional, covOptional,
    covOptional, covOptional, covOptional, covOptional,
    covOptional, covOptional, covOptional, covOptional);
 
//Get the first sheet.
sheets = book.GetSheets();
 
// 엑셀 하이퍼링크 속성 설정
Hyperlinks hls(sheet.GetHyperlinks());
 
// 링크할 셀과 
CString cell;
int cell_no = 1;
cell.Format("A%d", cell_no); // A1 셀을 의미
 
COleVariant vCell(cell);
COleVariant vText(sheet.GetName());
COleVariant vMissing;
vMissing.vt = VT_ERROR;
vMissing.scode = DISP_E_PARAMNOTFOUND;
 
// MFC EXCEL 하이퍼링크 주소 설정
CString link;
link.Format("'%s10'!A1""TEST"); // TEST10 시트 의미
 
COleVariant sub(link); //("'TEST'!A1");
 
hls.Add(sheet.GetRange(vCell, vMissing), file_name, sub, vMissing, vText);
cs


가운데 26번 라인이 Hyperlinks의 객체 hls를 나타냅니다.

1번부터 25번까지는 기본적인 엑셀 객체를 담는 소스이니, 26번부터가 MFC 엑셀 하이퍼링크와 관련된 부분이죠.


29~31번 라인은 셀을 구성하는 부분으로 위의 경우엔 A1 셀을 나타냅니다.

33~34번 라인은 시트와 셀을 구성하는 변수로 여기서 어느 시트, 어느 셀에 링크를 걸지 결정합니다.

35~37번 라인은 기본, 디폴트 값이니 그냥 사용하세요.

40~41번 라인은 내용이 좀 겹치는데, 어쨌든 시트를 의미하는 것으로 45번 마지막 라인을 봐야 굳이 CString 객체를 하나 더 생성했나 이해됩니다.

43번 라인은 Hyperlinks 객체가 받아들일 수 있도록 COleVariant 객체에 링크 전체 문자열을 추가합니다.


MFC 엑셀 하이퍼링크 추가 소스 (excel library 예제)[C++ 엑셀 시트 제어 예제 소스]


소스 중간에 uc1601이란 함수가 있는데, NX에서 사용하는 겁니다. NX 사용하지 않으시면 AfxMessageBox() 함수로 바꾸세요.


MFC 엑셀 하이퍼링크 추가 소스 (excel library 예제)

댓글