아래 코드는 잘 돌아가는 코드입니다.
strFN에 파일 경로 및 이름을 넣어주시면 됩니다.
Variant excel_app;
Variant excel_window;
Variant excel_book;
Variant excel_books;
Variant my_worksheet;
Variant excel_sheets;
Variant cells;
excel_app = Variant::CreateObject("Excel.Application");
excel_app.OlePropertySet("DisplayAlerts",false);
excel_app.OlePropertySet("Visible",false);
// strFN에 불러올 파일 지정 한 후, 아래에서 불러오기..
excel_app.OlePropertyGet("WorkBooks").OleProcedure("Open",strFN.t_str());
excel_window = excel_app.OlePropertyGet("ActiveWindow");
excel_book = excel_app.OlePropertyGet("ActiveWorkbook");
Variant my_worksheet1 = excel_book.OlePropertyGet("WorkSheets");
my_worksheet1.OleFunction("Add"); // Sheet 추가
my_worksheet = my_worksheet1.OlePropertyGet("Item",2);
my_worksheet.OlePropertySet("Name","Data"); // 두번째 시트 이름을 'Data'로 지정
my_worksheet = my_worksheet1.OlePropertyGet("Item",1);
my_worksheet.OlePropertySet("Name","Trend"); // 첫번째 시트 이름을 'Trend'로 지정
// 이 부분은 필요없으실거고....
String strDT = FormatDateTime("yyyy-mm-dd hh:nn:ss",chartReport->BottomAxis->Minimum);
strDT += " ~ " + FormatDateTime("yyyy-mm-dd hh:nn:ss",chartReport->BottomAxis->Maximum);
// Cell(1,4)에 strDT 내용을 쓰는 부분..
my_worksheet.OlePropertyGet("Cells").OlePropertyGet("Item",1,4).OlePropertySet("Value",strDT.t_str());
// 이부분은,..Cell(3,1)에 클립보드에 있던 내용을 Paste 하는 부분...
my_worksheet.OleFunction("Select");
cells = my_worksheet.OlePropertyGet("Cells",3,1);
cells.OleFunction("Select");
my_worksheet.OleProcedure("Paste");
//
// Save
excel_app.OleProcedure("Save");
excel_app.OleFunction("Quit");
excel_app = Unassigned;
안수홍 님이 쓰신 글 :
: 감사합니다..하지만 제가 볼랜드 C++써야하는게 아니라
: VISUAL C++를 반드시 써야 해서 엑셀 오토메이션을 이용해서 뭔가 해보려고 하는데요
:
: 문제는 제 프로그램 상에서는 New book을 열어서 쓰는게 가능한데요
: 제가 필요한 것은 Xls파일을 load한 다음에 거기에 쓰도록 해야 합니다.
:
: 한마디로 엑셀에서 new book만들기가 아닌 open을 한뒤
: 쓰도록 해야합니다.
:
: 그래서 시키는대로 했는데 자꾸 그림과 같은 오류가 뜨네요..ㅠㅠ
:
: 무슨 문제인지 도통모르겠네요 엑세스 위반이 발생했다는데,,.
|