Excel VBA编程 典型实例——成绩通知书

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档