C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47531] Re: 팁 하나
[] 1800 읽음    2006-12-22 23:14
장성호 님이 쓰신 글 :
: OLE로 EXCEL에 그래프를 그리는 방법?
:
:
: @현재 생각나는 방법들...
:
: 방법1. 프로그램에서 그래프를 그려서 IMAGE파일로 저장하여( 또는 클립보드에 저장하여)
:        EXCEL에서 불러오기 하는 방법
:
: 방법2. 미리 엑셀에 CHART를 그놓고 Chart가 가 참조하는 data영역에 data를 밀어 넣는 방법
:
: 방법3. ole로 직접 chart를 만드는 방법
:
:
:
: @현재 시도중인 방법들..
:
: 방법3  -  직접ole로 chart만드는 방법을 알면 가장 좋겠지만 쉽지가 않네요
:
: 방법1  -  이 경우 data의 갯수가 고정적일때는 별문제 없는데
:              data의 갯수가 가변적일때는 어렵네요
:
: 방법2  - 프로그램에서 image를 만들어 저장하는데
:               TImage를이용해  Canvas에 직접 그래프를 Draw한 경우는 파일로  저장이  쉽게 가능한데
:
:              TChart에 그려진 그래프는 파일로 저장이 쉽지 않네요
:              TChart가 화면에 보일때는 문제가 없는데
:              TChart 가 다른 control에 가려져 있는경우 잘안되네요
:             
:
: @그래프 Chart에 관한 질문
:
: 질문1. TChart의 그래프이미지를 File로 저장하는 방법을 알고싶습니다.
:        ( 단 TChart가 다른 Contol에 가려져 보이지 않는 상황에서도...)
:
: 질문2. excel파일에  Chart가 이미 그려져 있는 경우 
:            excel파일 chart의  series의 data-range을 조정하는 방법을 알고 싶습니다.
:
: 질문3. ole로  excel에 chart를 그리고 title을 설정하고, 위치를 조정하고, series를 추가하고.. 등등
:            ole로 excel에 chart를 그리는 방법을 알고싶습니다.
:
:
: 기타질문들...
:
: 질문1. ole로 excel에 checkbox를 넣는 방법을 알고 싶구요
:
: 질문2. ole로 excel에 프린트 page를 설정하는 방법을 알고싶습니다.
:
: 질문3. ole로 excel.application을 실행해서 TForm에 올렸습니다. SetParent로 parent를 바꿨죠
:           그리고  ole  command로  menu나 toolbar를 안보이게 하는등의 설정으로
:            excel의 설정을 바꾸었습니다.
:            바꾸었다가 프로그램 종료시 원래대로 복구해야하는데
:            그게 잘 안되네요 뭐 좋은방법 없을까요?
:            제가 ole로 띄운 EXCEL.EXE는 종료시 설정을 저장하지 않게하는  방법이 없을까요?
:
:
: 미리 감사합니다.
:
: 샘플같은것이나
: 좋은 사이트라도 소개좀 부탁합니다.

이미 알고 계실지 모르겠으나 간단한 팁 하나 소개합니다.

엑셀에는 매크로 기록 기능이 있는데 이를 사용하여 원하는 작업의 코드를 알아낼 수 있습니다.

아래 매크로에 나오는 각종 개체, 함수,속성,값의 이름들은 OLE에서 그대로 사용하므로 빌더에서 사용할 수 있습니다.


Sub Macro1()
    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A2:Q49"), PlotBy _
        :=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
    With ActiveChart
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
End Sub

Sub Macro2()
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("C4:C49"), PlotBy _
        :=xlColumns
End Sub

Sub Macro3()
    ActiveSheet.CheckBoxes.Add(205.5, 9, 75.75, 16.5).Select
    Range("D2").Select
End Sub

Sub Macro4()
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$2:$4"
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.42)
        .RightMargin = Application.InchesToPoints(0.32)
        .TopMargin = Application.InchesToPoints(0.63)
        .BottomMargin = Application.InchesToPoints(0.32)
        .HeaderMargin = Application.InchesToPoints(0.44)
        .FooterMargin = Application.InchesToPoints(0.2)
        .PrintHeadings = True
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
    End With
End Sub

+ -

관련 글 리스트
47529 OLE로 EXCEL에 그래프(chart)를 그리는 방법? 장성호 1960 2006/12/22
47531     Re: 팁 하나 1800 2006/12/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.