|
UnicodeString file_name;
ExcelWorksheet1->SaveAs(((WideString)file_name).c_bstr());
위와같은 형태로 2009 에서는 잘 동작합니다.
하안인 님이 쓰신 글 :
: 예전에 사용하던 소스인데
: 엑셀은 2007이고 빌더는 6.0그대로입니다.
:
: 그런데 SAVEAS에서 에러가 나서..
:
: ActiveWorkBook.OleFunction("SaveAs", FilePath ); --> 여기서 에러가 발생됩니다.
:
: 엑셀이 있는 것을 읽어오는 것은 에러가 안 났는데
:
: 새로운 엑셀에 데이타를 입력하고 파일명을 입력하는 데서 에러가 나네요.
:
: 예전에 사용한 소스 그대로실행해도 에러가 나서....
:
: ---------------------
: Variant xlApp;
: String str,Lv,Mv,strP,title[200];
: String tel,pa1,pa2,pa3,pa4,pa5,save_file;
: int x,y,i,j,k,n[200],ac;
: float tot,vf[200],vftot,ks;
: AnsiString FilePath ;
:
: ExcelSaveDialog->Filter = "excel files(*.xls)l*.XLS";
: if ( ExcelSaveDialog->Execute() )
: FilePath = ExcelSaveDialog->FileName ;
: else
: return;
:
: try
: {
: xlApp = CreateOleObject("Excel.Application");
: }
: catch(...)
: {
: ShowMessage("Excel프로그램이 설치되지 않았습니다.");
: return ;
: }
:
: try
: {
: Variant WorkBooks = xlApp.OlePropertyGet("WorkBooks");
: WorkBooks.OleFunction("Add");
: Variant ActiveWorkBook = xlApp.OlePropertyGet("ActiveWorkbook");
: Variant WorkSheets = xlApp.OlePropertyGet("Worksheets");
: Variant WorkSheet;
: Variant Range;
:
: for(i = 0; i < 1; i++)
: WorkSheets.OleFunction("Add");
:
: WorkSheet = WorkSheets.OlePropertyGet("Item", i+1);
: WorkSheet.OleFunction("Activate");
: WorkSheet.OlePropertyGet("Range", "A1:K500").OlePropertyGet("Font").OlePropertySet("Size", 9);
:
: x = 3;
:
: MainForm->msPart2->First();
: int r,c;
: r = 1;
: c = 1;
: while(!MainForm->msPart2->Eof)
: {
: c=1;
: tel = MainForm->msPart2->FieldByName("tel")->AsString;
: pa1 = MainForm->msPart2->FieldByName("part1")->AsString;
: pa2 = MainForm->msPart2->FieldByName("part2")->AsString;
: pa3 = MainForm->msPart2->FieldByName("part3")->AsString;
: pa4 = MainForm->msPart2->FieldByName("part4")->AsString;
: pa5 = MainForm->msPart2->FieldByName("part5")->AsString;
: Range = WorkSheet.OlePropertyGet("Cells",r,c++);
: Range.OlePropertySet("Value",tel.c_str());
: Range = WorkSheet.OlePropertyGet("Cells",r,c++);
: Range.OlePropertySet("Value",pa1.c_str());
: Range = WorkSheet.OlePropertyGet("Cells",r,c++);
: Range.OlePropertySet("Value",pa2.c_str());
: Range = WorkSheet.OlePropertyGet("Cells",r,c++);
: Range.OlePropertySet("Value",pa3.c_str());
: Range = WorkSheet.OlePropertyGet("Cells",r,c++);
: Range.OlePropertySet("Value",pa4.c_str());
: Range = WorkSheet.OlePropertyGet("Cells",r,c++);
: Range.OlePropertySet("Value",pa5.c_str());
: MainForm->msPart2->Next();
: }
:
: WorkSheet.OlePropertySet("Name","통계");
: ActiveWorkBook.OleFunction("SaveAs", FilePath ); //Datei speichern
: }
: catch(...)
: {
: ShowMessage("이상이 발생했습니다.");
: }
|