|
장성호 님이 쓰신 글 :
: 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
|