저자: Yang Zhongxun 전공: 컴퓨터 소프트웨어 개발 및 응용 언어 능력: TOFEL633 GRE2140
이메일: [email protected]
실제 Mis 시스템 개발 과정에서 현재 페이지의 보고서 데이터를 Word 문서 형식으로 로컬 컴퓨터에 다운로드해야 하는 경우가 있습니다. 이 구현은 어렵지 않습니다. 하지만 다운로드한 Word 문서의 제목 색상, 글꼴 크기, 단어 간격 등과 같은 형식을 일부 설정해야 하는 경우도 있습니다. 이 경우 Word에 포함된 매크로 기능을 사용해야 합니다.
예를 들어, 이 보고서의 제목을 Word 문서에서 14포인트 글꼴, 굵은 글꼴, 가운데 맞춤 형식으로 표시하려고 합니다. 먼저 Word에서 해당 매크로 명령을 기록해야 합니다. Word를 열고 새 문서를 만들고 텍스트 한 줄을 수동으로 입력한 다음 도구->매크로->새 매크로 기록 명령을 선택하고 새 매크로에 Macro1과 같은 이름을 지정한 다음 위 작업을 수행합니다(크기 14, 굵게, 가운데) -정렬됨) Word에서는 이러한 작업을 해당 Vbscript 명령으로 자동으로 저장합니다. 그런 다음 도구->매크로->매크로 명령을 선택하고 방금 정의한 Macro1 매크로를 선택하면 해당 내용을 볼 수 있습니다. 이 예에서 저장한 매크로 명령은 다음과 같습니다:
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'Center alignment
Selection.Font.Bold = wdToggle '굵게 표시
Selection.Font.Size = 14 '
매크로 명령의 스크립트 언어는 Vbscript이므로 VB에서는 아무런 변경 없이 위의 명령문을 사용할 수 있습니다. 이러한 방식으로 우리는 필요한 기능을 달성하기 위해 다음 VB 코드를 작성할 수 있습니다. 코드는 다음과 같습니다:
WdApp.Selection.Font.Bold = wdToggle '굵게 표시
WdApp.Selection.Font.Size = 14 '14 크기 글꼴
WdApp.Selection.TypeText ("보고서 제목") '보고서 제목
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter '가운데 정렬
WdApp.Selection.Font.Bold = wdToggle '굵게 표시를 취소합니다.
마찬가지로 Word 문서에서 다른 처리를 수행하려면 위 단계를 반복하면 됩니다. 다음은 Word 문서 처리에 대한 완전한 예를 제공합니다.
Private Function SaveAsWord(ByRef MyRecord As Recordset, ByVal DocFileName As String, ByRef OutMessage As String) As Integer
'************************************************ * ***********************
'
'설명: 데이터세트의 데이터를 DOC 파일로 저장합니다.
'
'매개변수:
'
'MyRecord 데이터 세트
'DocFileName WORD 파일 이름(경로 없음, 경로는 인스턴스 변수 sPath 참조)
'OutMessage 작업의 반환 정보
'
'반환: 1번 성공 -1번 실패
'
'************************************************ * ***********************
'Word 응용 프로그램을 초기화합니다.
오류가 발생했습니다.지우기
오류 발생 시 GoTo Err_All
희미한 WdApp을 Word.Application으로 사용
Set WdApp = CreateObject("Word.Application")
'데이터 삽입
Dim colloop As Integer '열 번호
Dim rowloop As Integer '행 번호
Dim colMax As Integer '열 개수
Dim rowMax As Integer '행 수
Dim wdcell As Integer '너비
Dim UnitEnd As Integer '인터셉트 끝점
Dim UnitName As String '단위 이름
Dim BbDate As String '보고 기간
wdcell=12
colMax = MyRecord.Fields.count
rowMax = MyRecord.RecordCount
WdApp.Documents.Add
'보고서 단위 가져오기
UnitEnd = InStr(sBBDetail, "마침표")
UnitName = Mid(sBBDetail, 1, UnitEnd - 2)
BbDate = Mid(sBBDetail, UnitEnd, Len(sBBDetail))
MyRecord.Fields.count >= 10인 경우
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape
또 다른
WdApp.ActiveDocument.PageSetup.Orientation = wdOrientPortrait
종료 조건
'보고서 이름
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.Font.Size = 14
WdApp.Selection.TypeText(sbbmc)
WdApp.Selection.ParagraphFormat.lignment = wdAlignParagraphCenter
WdApp.Selection.Font.Bold = wdToggle
WdApp.Selection.TypeParagraph
'보고 단위 이름
WdApp.Selection.Font.color = wdColorBlack
WdApp.Selection.Font.Size = 11
WdApp.Selection.TypeText(UnitName)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
'보고기간
WdApp.Selection.TypeText(BbDate)
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
'열 헤더 생성
'wdApp.Selection.HomeKey wdLine, wdExtend
'dApp.Selection.Font.Bold = wdToggle
WdApp.ActiveDocument.Tables.Add WdApp.Selection.Range, rowMax, colMax
Dim i를 정수로 표시
하다
colloop = 0의 경우 colMax - 1로
WdApp.Selection.Font.Size = 9
i = 0이면
'테이블의 제목은 굵게 표시됩니다.
WdApp.Selection.Font.Bold = wdToggle
'테이블 제목 행의 배경색을 회색으로 설정하고 회색조는 30입니다.
WdApp.Selection.Cells 사용
.Shading 사용
.Texture = wdTextureNone
.ForegroundPatternColor = wdColorAutomatic
.BackgroundPatternColor = wdColorGray30
끝
끝
종료 조건
'마지막 줄은 오른쪽 정렬되고 나머지는 왼쪽 정렬됩니다.
만약 i > 0이면
MyRecord.Fields.Item(colloop).Name = "ZBMC" 또는 MyRecord.Fields.Item(colloop).Name = "표시기 이름"인 경우
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
또 다른
WdApp.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
종료 조건
종료 조건
i = 0이고 (MyRecord.Fields.Item(colloop).Name = "SXH" Or MyRecord.Fields.Item(colloop).Name = "Sequence Number")이면
WdApp.Selection.TypeText("일련 번호")
또 다른
WdApp.Selection.TypeText (CStr(MyRecord.Fields.Item(colloop).value))
종료 조건
If (i <> rowMax - 1 Or (i = rowMax - 1 And colloop < colMax - 1)) 그러면
WdApp.Selection.MoveRight(wdcell)
종료 조건
다음
나는 = 나는 + 1
내 기록.이동다음
MyRecord.EOF까지 반복
WdApp.ActiveDocument.SaveAs DocFileName, 0, False, "", True, "", False, False, False, False, False
WdApp.종료
SaveAsWord = 1
종료 기능
오류_모두:
WdApp = 없음 설정
SaveAsWord = -1
OutMessage = 오류.설명
종료 기능
End Function
좋습니다. 지금까지 Word 매크로 명령을 사용하여 VB에서 ASP 구성 요소를 개발하는 방법을 어느 정도 이해했다고 생각합니다. 더 많이 사용할수록 빨리 익숙해질 것입니다.