엑셀에 관련된 자료가 여기 많기는 한데..
님이 질문한 내용은 없는듯 하네요
Excel은 너무 많은 기능이 있어서 그것을 익히기도 쉽지않은데..
프로그램으로 직접 제어하는 기능까지 다 알기는 어렵죠
하지만 어떠한 특이한 기능이라도 찾는 방법이 있으니 ..
그것은 메크로 라는 것입니다.
1. 엑셀을 실행하고
2. 도구 => 메크로 =>새 메크로 실행 한후..
3. 엑셀에서 원하는 기능을 수행하고.
4. 도구 => 메크로 => 메크로 정기 한후
5. 그 메크로의 내용을 그대로 코딩하면 됩니다.
특정 셀의 타입을 변경하는 방법을 메크로로 기록하니 아래와 같이 되더군요
//------------------------------------------------------------
Sub Macro1()
'
' Macro1 Macro
' 장성호이(가) 2007-10-29에 기록한 매크로
Range("C5").Select
ActiveCell.FormulaR1C1 = "123123123"
Range("C5").Select
Selection.NumberFormatLocal = "@"
End Sub
//------------------------------------------------------------
위 메크로에서 이부분이 핵심입니다.
Selection.NumberFormatLocal = "@"
선택된 셀의 속성을 문자(Text)로 바꾸는 것이죠
아래에 샘플 코딩 해보았습니다.
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant excel_app;
Variant excel_book;
Variant excel_sheet;
Variant cells;
String asFileName="C:\\Test.xls";
excel_app=Variant::CreateObject("excel.application"); //Excel 프로그램 실행
excel_app.OlePropertySet("Visible", (Variant)true); //Excel 프로그램 Visible설정
excel_app.OlePropertyGet("WorkBooks").OleProcedure("Open",asFileName.c_str()); //문서 파일 열기
excel_book=excel_app.OlePropertyGet("ActiveWorkbook"); //현재 Active된 WorkBook 선택
excel_sheet=excel_book.OlePropertyGet("ActiveSheet"); // WorkBook에서 Acitve된 Sheet선택
cells = excel_sheet.OlePropertyGet("Cells",2 , 2); //Cell선택 // Sheet에서 Cell 2,2 선택
String sSet="@";
cells.OlePropertySet("NumberFormatLocal",WideString(sSet)); //선택한 Cell속성을 Text로 변경
String vValue="123123123123";
cells.OlePropertySet("Value", WideString(vValue)); //선택한 Cell에 데이타 입력
excel_book.OleProcedure("SaveAs",asFileName.c_str()); //저장
excel_book.OleFunction("Close", (Variant)False); //Excel 문서 닫기
excel_sheet = Unassigned;
excel_book = Unassigned;
excel_app.OleFunction("Quit"); //Excel 프로그램 종료
excel_app = Unassigned;
}
//---------------------------------------------------------------------------
위 샘플은 특정 cell의 속성을 text로 설정했는데...
특정 행이나 열 또는 영역의 설정을 바꾸려면 선택하는 부분만 바꾸면 되겠죠
일일이 모든 cell을 반복해서 선택해 설정하는것은 노가다고..
그 방법도 메크로를 통해 확인하면 간단합니다.
그럼...
김정균 님이 쓰신 글 :
: 엑셀 OleObject를 사용하여 자료를 저장하고 있습니다.
: 근데 문제가 엑셀의 특정 열의 cell 타입을 text로 지정해주고 싶은데
: 방법을 모르겠습니다.
: OlePropertySet을 사용하면 될거 같은데 매개변수의 값을 어떻게 줘야할지
: 모르겠네요. 아시는분이 알려주시면 감사하겠습니다.
:
: ps. OlePropertySet에서 사용가능한 값들이 나와있는 웹페이지가 있으면
: 알려주세요.