Excel VBA编程 典型实例——成绩通知书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Excel VBA编程典型实例——成绩通知书
每到快放假时候,让教师头疼的是为每个学生写成绩通知书。为了解决这一问题,可以使用VBA来自动生成每个学生的成绩通知书,这样即省时又省力。通过本节练习,了解VBA对Word的操作,进而使操作更加简化。
1.练习要点
●使用VBA操作Word
●设置Word
2.操作步骤
(1)启动Word2007,并创建一个Word模板(即.dotx格式),如图18-4所示。
图18-4 创建Word模板
(2)启动Excel 2007,并命名一个工作表为“成绩表”,设置其内容如图18-5所示。
图18-5 设置“成绩表”工作表
(3)在“成绩表”的“名次”右侧,添加“教师评语”内容,如图18-6所示。
图18-6 添加教师评语
(4)在“成绩表”的学生成绩下添加“放假时间”、“报名时间”和“开课时间”等内容,如图18-7所示。
图18-7 添加其他信息。
(5)添加一个“命令按钮”,到该工作表中空白处。设置其Caption 属性为“生成通知书”。
(6)双击该按钮,弹出该控件的【代码】编辑窗口。在该控件的Click 事件中,输入代码如下: Dim d1, d2, d3, d4 As Date
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim shTemp As Worksheet '保存临时表的引用 Dim shResult As Worksheet '保存成绩表的引用
With Sheets("成绩表")
i = .[A1048576].End(xlUp).Row
'放假日期
创建
d1 = .Cells(i - 2, 2)
'报名日期
d2 = .Cells(i - 1, 2)
'填写日期
d3 = Format(Date, "yyyy年mm月dd日")
'开课日期
d4 = .Cells(i, 2)
End With
'判断是否有"Temp"工作表
On Error GoTo err1
Set shTemp = Worksheets("Temp")
label1:
'获取成绩表
Set shResult = Worksheets("成绩表")
'取得成绩表数据的行数
j = shResult.Range("A2").CurrentRegion.Rows.Count '复制表头
shResult.Range("A2:L2").Copy
shTemp.Activate
shTemp.Range("A1").Select
'将数据粘贴到临时表
ActiveSheet.Paste
'获取成绩信息
For i = 3 To j - 3
shResult.Activate
shResult.Range(Cells(i, 1), Cells(i, 13)).Copy
shTemp.Activate
shTemp.Range("A2").Select
ActiveSheet.Paste
'调整列宽
shTemp.Range("A1:M2").Columns.AutoFit
'调用创建word过程
CreateWord
Next
Exit Sub
err1:
Set shTemp = Worksheets.Add '添加一个临时表
= "Temp"
GoTo label1 '跳到标签label1处执行End Sub
Public Sub CreateWord()
Dim myWord As Word.Application
Dim myDoc As Word.Document
Set myWord = New Word.Application
With myWord
Set myDoc = .Documents.Add(Template:=ThisWorkbook.Path & _
"\成绩通知书.dotx", Visible:=True)
With .Selection
'插入学生名称
.Goto What:=wdGoToBookmark, Name:="father"
.TypeText Text:=Worksheets("Temp").Cells(2, 2)
'放假日期
.Goto What:=wdGoToBookmark, Name:="d1"
.TypeText Text:=Format(date1, "yyyy年mm月dd日")
'报名日期
.Goto What:=wdGoToBookmark, Name:="d2"
.TypeText Text:=Format(date2, "yyyy年mm月dd日")
'开课日期
.Goto What:=wdGoToBookmark, Name:="d4"
.TypeText Text:=Format(date4, "yyyy年mm月dd日")
'填表日期
.Goto What:=wdGoToBookmark, Name:="d3"
.TypeText Text:=Format(date3, "yyyy年mm月dd日")
'成绩表
.Goto What:=wdGoToBookmark, Name:="results"
Sheets("Temp").Range("A1:L2").Copy
.TypeText Text:=vbTab
.PasteExcelTable False, False, False
'教师评语
.Goto What:=wdGoToBookmark, Name:="memo"
.TypeText Text:=Worksheets("Temp").Range("M2")
End With