Excel COM을 찾아 보셔야 하는데...
다음 주소를 참조해 보면 답이 나옵니다.
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbooks-open-method-excel
test1.xlsx를 만들어 저장할 때 읽기/쓰기 비빌번호를 "1234"로 하여 저장한 후 다음 코드 실행해 보면됩니다.
Variant App;
try{
WideString loadFile = "D:\\test1.xlsx"; //기존파일명
WideString saveFile = "D:\\test2.xlsx"; //새로 저장할 파일명
App = CreateOleObject("Excel.Application"); //COM(OLE) Object 생성
App.OlePropertySet("Visible", true);
Variant readOnly = false;
WideString pw = "1234";
Variant workbook = App.OlePropertyGet("Workbooks").OleFunction("Open", loadFile, Unassigned, readOnly, Unassigned, pw, pw); // 기존 파일 열기
Variant sheet = workbook.OlePropertyGet( "Sheets").OlePropertyGet( "Item", 1 ); //첫번째 Sheet
//Variant sheet = workbook.OlePropertyGet( "ActiveSheet" ); //활성화된 Sheet
sheet.OlePropertyGet("Cells",1, 1).OlePropertySet("Value", 1234567 ); //셀 수정
workbook.OleFunction( "SaveAs", saveFile ); //다른 이름으로 저장
}__finally{
App.OleFunction("Quit");
App = Unassigned;
}
라이손레종ㅎ 님이 쓰신 글 :
: 앞전에 글을 올렸는데.. 빌더가 죽어가는거 같네요.. 예전엔 질문올리면
: 많은 고수분들께서 답변 해주셨는데.. 요즘은 안보이시는거 같기도 하고..
: 전 터보c로 .. 배워서.. 잘모릅니다.. 질문할곳도.. 여기뿐이고요..
: 나름 구글에서 몇일을 찾아보았지만.. 해답이 없네요..
:
: 혹시나해서.. 다시 질문을 드려보아요..
:
: 엑셀에 암호를 설정해두면( 시트보호 아님 ) 어떻게 열어야 하나요 .. ??
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: Variant App;
: try{
: WideString loadFile = "D:\\test1.xlsx"; //기존파일명
: WideString saveFile = "D:\\test2.xlsx"; //새로 저장할 파일명
:
: App = CreateOleObject("Excel.Application"); //COM(OLE) Object 생성
:
: App.OlePropertySet("Visible", true);
:
: Variant workbook = App.OlePropertyGet("Workbooks").OleFunction("Open", loadFile ); // 기존 파일
: // 여기서 암호를 넘어주면 될듯한데.. 어떻게.. 하는지 전혀 모르겠습니다..
:
: Variant sheet = workbook.OlePropertyGet( "Sheets").OlePropertyGet( "Item", 1 ); //첫번째 Sheet
: //Variant sheet = workbook.OlePropertyGet( "ActiveSheet" ); //활성화된 Sheet
:
: sheet.OlePropertyGet("Cells",1, 1).OlePropertySet("Value", 1234567 ); //셀 수정
:
: workbook.OleFunction( "SaveAs", saveFile ); //다른 이름으로 저장
: }__finally{
: App.OleFunction("Quit");
: App = Unassigned;
: }
:
: 아시는분 부탁드립니다..