728x90
반응형
728x170
▶ 아래 한글 테이블 추가하기 예제
HWPHideSecurityWarningWindow pHwpCtrl
pHwpCtrl.EditMode = 0
pHwpCtrl.Open "c:\template.hwp"
pHwpCtrl.MovePos 3
'--------------------------------------------------
' 테이블 초기화 데이터를 생성한다. (컬럼 수 : 8)
'--------------------------------------------------
Dim pColumnWidthArray As Variant ' 컬럼 너비 배열 (단위 : 밀리미터)
Dim pColumnAlignmentArray As Variant ' 컬럼 정렬 배열 ; 왼쪽 정렬(L), 가운데 정렬(C), 오른쪽 정렬(R)
Dim pColumnHeaderArray As Variant ' 컬럼 헤더 배열
ReDim pColumnWidthArray(1 To 8) As Variant
ReDim pColumnAlignmentArray(1 To 8) As Variant
ReDim pColumnHeaderArray(1 To 8) As Variant
' A4 가로 페이지 여백 10mm 설정시 이용 가능 크기 : 약 246 mm
pColumnWidthArray(1) = 30.75
pColumnWidthArray(2) = 30.75
pColumnWidthArray(3) = 30.75
pColumnWidthArray(4) = 30.75
pColumnWidthArray(5) = 30.75
pColumnWidthArray(6) = 30.75
pColumnWidthArray(7) = 30.75
pColumnWidthArray(8) = 30.75
pColumnAlignmentArray(1) = "L"
pColumnAlignmentArray(2) = "C"
pColumnAlignmentArray(3) = "R"
pColumnAlignmentArray(4) = "L"
pColumnAlignmentArray(5) = "L"
pColumnAlignmentArray(6) = "R"
pColumnAlignmentArray(7) = "L"
pColumnAlignmentArray(8) = "L"
pColumnHeaderArray(1) = "가"
pColumnHeaderArray(2) = "나"
pColumnHeaderArray(3) = "다"
pColumnHeaderArray(4) = "라"
pColumnHeaderArray(5) = "마"
pColumnHeaderArray(6) = "바"
pColumnHeaderArray(7) = "사"
pColumnHeaderArray(8) = "아"
'--------------------------------------------------
' 테이블 데이터를 생성한다.
' ※ 일반적으로 데이터베이스 조회 데이터를 설정한다.
'--------------------------------------------------
Dim strValueArray() As String
ReDim strValueArray(1 To 200, 1 To 8) As String
Dim Y, X
For Y = 1 To 200
For X = 1 To 3
strValueArray(Y, X) = "Z" & Y & "," & X
Next X
Next Y
'--------------------------------------------------
' 페이지 방향을 설정한다.
'--------------------------------------------------
HWPSetPageDirection pHwpCtrl, True
'--------------------------------------------------
' 테이블을 초기화 한다.
'--------------------------------------------------
HWPInitializeTable pHwpCtrl, 8, pColumnWidthArray, pColumnAlignmentArray, pColumnHeaderArray
'--------------------------------------------------
' 리포트 테이블을 추가한다.
'--------------------------------------------------
HWPInsertReportTable pHwpCtrl, strValueArray, 30, 30
pHwpCtrl.MovePos 2
※ HWPHideSecurityWarningWindow 메소드 : "아래 한글 문서 여는 경우 보안 경고창 숨기기" 참조
※ HWPSetPageDirection 메소드 : "아래 한글 페이지 방향 설정하기" 참조
▶ 아래 한글 테이블 추가하기
Option Explicit
Dim m_pTableAction As HwpAction ' 테이블 생성 액션 객체
Dim m_pTableParameterSet As HwpParameterSet ' 테이블 생성 파라미터 세트 객체
Dim m_pTableParameterArray As HwpParameterArray ' 테이블 생성 파라미터 배열 객체
Dim m_pTextAction As HwpAction ' 텍스트 추가 액션 객체
Dim m_pTextParameterSet As HwpParameterSet ' 텍스트 추가 파라미터 세트 객체
Dim m_nColumnCount As Integer ' 컬럼 수
Dim m_dColumnWidthArray() As Double ' 컬럼 너비 배열
Dim m_strColumnAlignmentArray() As String ' 컬럼 정렬 배열
Dim m_strColumnHeaderArray() As String ' 컬럼 헤더 배열
'--------------------------------------------------
' 아래 한글 테이블 초기화 하기
'--------------------------------------------------
' pHwpCtrl : HwpCtrl OCX
' nColumnCount : 컬럼 수
' pColumnWidthArray : 컬럼 너비 배열 (인덱스는 1부터 시작)
' pColumnAlignmentArray : 컬럼 정렬 배열 (인덱스는 1부터 시작)
' pColumnHeaderArray : 컬럼 헤더 배열 (인덱스는 1부터 시작)
'--------------------------------------------------
Public Sub HWPInitializeTable(pHwpCtrl As HwpCtrl, nColumnCount As Integer, pColumnWidthArray As Variant, pColumnAlignmentArray As Variant, pColumnHeaderArray As Variant)
Dim nColumn As Integer
'--------------------------------------------------
' 테이블 초기화 데이터를 해당 전역 변수에 설정한다.
'--------------------------------------------------
m_nColumnCount = nColumnCount
ReDim m_dColumnWidthArray(1 To nColumnCount)
ReDim m_strColumnAlignmentArray(1 To nColumnCount)
ReDim m_strColumnHeaderArray(1 To nColumnCount)
For nColumn = 1 To nColumnCount
m_dColumnWidthArray(nColumn) = CDbl(pColumnWidthArray(nColumn))
m_strColumnAlignmentArray(nColumn) = CStr(pColumnAlignmentArray(nColumn))
m_strColumnHeaderArray(nColumn) = CStr(pColumnHeaderArray(nColumn))
Next nColumn
'--------------------------------------------------
' 테이블 생성 객체를 정의한다.
'--------------------------------------------------
Set m_pTableAction = pHwpCtrl.CreateAction("TableCreate")
Set m_pTableParameterSet = m_pTableAction.CreateSet()
m_pTableParameterSet.SetItem "Cols", m_nColumnCount
m_pTableParameterSet.SetItem "WidthType", 2
m_pTableParameterSet.SetItem "HeightType", 1
m_pTableParameterSet.CreateItemSet "TableProperties", "Table"
Set m_pTableParameterArray = m_pTableParameterSet.CreateItemArray("ColWidth", nColumnCount)
For nColumn = 1 To nColumnCount
m_pTableParameterArray.SetItem nColumn - 1, HWPGetUnit(CDbl(pColumnWidthArray(nColumn)))
Next
'--------------------------------------------------
' 텍스트 추가 객체를 정의한다.
'--------------------------------------------------
Set m_pTextAction = pHwpCtrl.CreateAction("InsertText")
Set m_pTextParameterSet = m_pTextAction.CreateSet()
End Sub
'--------------------------------------------------
' 아래 한글 테이블 추가하기
'--------------------------------------------------
' pHwpCtrl : HwpCtrl OCX
' strTableID : 테이블 ID
' strValueArray : 값 배열 (※ 2차원 문자열 배열)
' nStartRow : 테이블에 추가할 값 배열 데이터의 시작 행 인덱스
' (1부터 "전체 행 수 - nRowCount + 1"까지 지정 가능)
' nRowCount : 추가 행 수
'--------------------------------------------------
Public Sub HWPInsertTable(pHwpCtrl As HwpCtrl, strTableID As String, strValueArray() As String, nStartRow As Integer, nRowCount As Integer)
Dim nRow As Integer
Dim nColumn As Integer
'--------------------------------------------------
' 추가할 테이블 행 수를 설정한다.
' ※ 헤더를 포함해 행 수 + 1을 설정한다.
'--------------------------------------------------
m_pTableParameterSet.SetItem "Rows", nRowCount + 1
'--------------------------------------------------
' 테이블을 추가한다.
'--------------------------------------------------
m_pTableAction.Execute m_pTableParameterSet
pHwpCtrl.SetCurFieldName strTableID, 1, 0, 0
pHwpCtrl.MoveToField strTableID, False, False, False
pHwpCtrl.Run "TableCellBlock"
pHwpCtrl.Run "Cancel"
'--------------------------------------------------
' 컬럼 헤더를 설정한다.
'--------------------------------------------------
For nColumn = 1 To m_nColumnCount
pHwpCtrl.Run "ParagraphShapeAlignCenter"
m_pTextParameterSet.SetItem "Text", m_strColumnHeaderArray(nColumn)
m_pTextAction.Execute m_pTextParameterSet
pHwpCtrl.Run "TableRightCell"
Next nColumn
'--------------------------------------------------
' 셀 데이터를 설정한다.
'--------------------------------------------------
For nRow = 1 To nRowCount
For nColumn = 1 To m_nColumnCount
'--------------------------------------------------
' 컬럼 정렬 배열 값에 따라 셀 정렬을 설정한다.
'--------------------------------------------------
Select Case m_strColumnAlignmentArray(nColumn)
Case "L":
pHwpCtrl.Run "ParagraphShapeAlignLeft"
Case "R":
pHwpCtrl.Run "ParagraphShapeAlignRight"
Case Else
pHwpCtrl.Run "ParagraphShapeAlignCenter"
End Select
'--------------------------------------------------
' 셀 데이터를 설정한다.
'--------------------------------------------------
m_pTextParameterSet.SetItem "Text", strValueArray(nStartRow + nRow - 1, nColumn)
m_pTextAction.Execute m_pTextParameterSet
pHwpCtrl.Run "TableRightCell"
Next nColumn
Next nRow
End Sub
'--------------------------------------------------
' 아래 한글 리포트 테이블 추가하기
'--------------------------------------------------
' pHwpCtrl : HwpCtrl OCX
' strValueArray : 값 배열 (※ 2차원 문자열 배열)
' nFirstPageRowCount : 첫 페이지 행 수
' nPageRowCount : 페이지 행 수
'--------------------------------------------------
Public Sub HWPInsertReportTable(pHwpCtrl As HwpCtrl, strValueArray() As String, nFirstPageRowCount As Integer, nPageRowCount As Integer)
Dim nTotalRowCount As Integer
Dim nTotalPageCount As Integer
Dim nPage As Integer
Dim nStartRow As Integer
Dim nRowCount As Integer
nTotalRowCount = UBound(strValueArray, 1)
If nTotalRowCount = 0 Then ' 전체 행 수가 0인 경우
HWPInsertTable pHwpCtrl, "TableID1", strValueArray, 1, 0
pHwpCtrl.MovePos 3
ElseIf nFirstPageRowCount > nTotalRowCount Then ' 첫 페이지 행 수가 전체 행 수보다 큰 경우
HWPInsertTable pHwpCtrl, "TableID1", strValueArray, 1, nTotalRowCount
pHwpCtrl.MovePos 3
Else ' 상기 경우가 아닌 경우
nTotalPageCount = Round((nTotalRowCount - nFirstPageRowCount) / nPageRowCount + 0.5, 0) + 1
nStartRow = 1
For nPage = 1 To nTotalPageCount
If nPage = 1 Then
HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, nFirstPageRowCount
nStartRow = nStartRow + nFirstPageRowCount
Else
If nPage = nTotalPageCount Then
If (nTotalRowCount - nFirstPageRowCount) Mod nPageRowCount = 0 Then
HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, nPageRowCount
Else
HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, (nTotalRowCount - nFirstPageRowCount) Mod nPageRowCount
End If
Else
HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, nPageRowCount
nStartRow = nStartRow + nPageRowCount
End If
End If
pHwpCtrl.MovePos 3
Next
End If
End Sub
※ HWPGetUnit 함수 : "아래 한글 단위 구하기" 참조
728x90
반응형
그리드형(광고전용)
'VB' 카테고리의 다른 글
[VB] MDB 파일 정보 구하기 (0) | 2015.06.01 |
---|---|
[VB] 마우스 커서 표시 여부 설정하기 (0) | 2015.05.31 |
[VB] 클래스 사용하기 (0) | 2015.05.31 |
[VB] 마우스 위치를 폼 내부로 제한하기 (0) | 2015.05.31 |
[VB] 아래 한글 페이지 마진 설정하기 (0) | 2015.05.30 |
[VB] 아래 한글 텍스트 크기 설정하기 (0) | 2015.05.28 |
[VB] 아래 한글 텍스트 색상 설정하기 (0) | 2015.05.27 |
[VB] 아래 한글 페이지 방향 설정하기 (0) | 2015.05.24 |
[VB] ERROR 명령문을 사용해 에러 발생시키기 (0) | 2015.05.24 |
[VB] 프로세스 제거하기 (0) | 2015.05.24 |
댓글을 달아 주세요