|
|
|
語(yǔ)文考試中,經(jīng)常用到作文稿紙,Word中帶有稿紙模板,但有諸多限制(如紙型、行列數(shù)等相對(duì)固定),在試卷排版時(shí)頗為不便。經(jīng)過嘗試,筆者找到一種利用Word的VBA編程,通過繪制表格實(shí)現(xiàn)考試用作文稿紙的方法。
一、編制程序
1.啟動(dòng)Word,連續(xù)點(diǎn)擊“工具”,“宏”,“錄制新宏...”,在彈出的對(duì)話框中填寫宏名(此例為“作文稿紙”),選擇宏要保存的位置(可以保存在模板中,也可以保存在當(dāng)前文檔中),如圖1所示。
2.為了方便操作,可以將此宏以按鈕的形式指定在工具欄中。單擊“錄制宏”對(duì)話框中的“工具欄”按鈕,在彈出的“自定義”對(duì)話框的右側(cè),選中宏命令“Normal.NewMacros.作文稿紙”,用鼠標(biāo)將其拖動(dòng)復(fù)制到“常用”工具欄,在其上單擊右鍵,選擇相應(yīng)的命令修改名稱,為其編輯一個(gè)小圖標(biāo),結(jié)果如圖2所示。
3.單擊“錄制宏”對(duì)話框中的“關(guān)閉”按鈕,屏幕上將出現(xiàn)一個(gè)“錄制宏”工具欄,單擊停止按鈕停止錄制。
4.依次選擇“工具”、“宏”、“宏…”,在對(duì)話框中選擇宏名“作文稿紙”,單擊“編輯”按鈕,打開vba編程窗口。錄入如下代碼:
Sub 作文稿紙()
UserForm1.CommandButton1.Enabled = True
UserForm1.Show
End Sub
5.插入一個(gè)窗體UserForm1,在其中插入4個(gè)標(biāo)簽,4個(gè)文本框,一個(gè)按鈕。分別設(shè)置它們的相關(guān)屬性,其中,“所需行數(shù)”文本框的“text”屬性值設(shè)為25,“所需列數(shù)”文本框的“text”屬性值設(shè)為20,“行間距”文本框的“text”屬性值設(shè)為0.5,“首尾空行高度”文本框的“text”屬性值設(shè)為0.4,如圖3所示
6.雙擊命令按鈕CommandButton1,錄入以下代碼:
Private Sub CommandButton1_Click()
Dim n As Integer 定義一個(gè)變量為整數(shù)型
n = 1
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=Val(TextBox1.Text) * 2 + 1, NumColumns _
:=Val(TextBox2.Text), DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
Selection.EndKey Unit:=wdRow, Extend:=True
Selection.Cells.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
Selection.Tables(1).Rows.HeightRule = wdRowHeightExactly
設(shè)定表格行高為固定值
Selection.Tables(1).Rows.Height = CentimetersToPoints(Val(TextBox3.Text))
設(shè)置表格行高為設(shè)置值,作為行間距
Selection.Tables(1).Rows(1).Height = CentimetersToPoints(Val(TextBox4.Text))
設(shè)置第一行行高為設(shè)置值
Do While n < Val(TextBox1.Text) + 1
Selection.EndKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=2
將插入點(diǎn)移至下一行
Selection.Tables(1).Rows(2 * n).Height = Selection.Tables(1).Columns(1).PreferredWidth
設(shè)行高等于列寬
Selection.EndKey Unit:=wdRow, Extend:=True
Selection.EndKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=2
將插入點(diǎn)移至下一行
Selection.EndKey Unit:=wdRow, Extend:=True
Selection.Cells.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
去除此行的內(nèi)部框線,只余邊框
n = n + 1
Loop
Selection.Tables(1).Rows(Val(TextBox1.Text) * 2 + 1).Height = CentimetersToPoints(Val(TextBox4.Text))
設(shè)置末行高為設(shè)置值
Selection.EndKey Unit:=wdRow, Extend:=True
Selection.Cells.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
Selection.Tables(1).Rows.Alignment = wdAlignRowCenter
表格居中
With Selection.Tables(1)
.Borders(wdBorderLeft).LineWidth = wdLineWidth150pt
.Borders(wdBorderRight).LineWidth = wdLineWidth150pt
.Borders(wdBorderTop).LineWidth = wdLineWidth150pt
.Borders(wdBorderBottom).LineWidth = wdLineWidth150pt
設(shè)定表格邊框?yàn)榇志€
End With
Selection.EndKey Unit:=wdLine
Unload Me
End Sub
二、使用
與Word的稿紙向?qū)Щ蚋寮埣虞d項(xiàng)相比,此程序做出的稿紙顯然不適于在文檔中直接使用,但在制作作文試卷時(shí)優(yōu)勢(shì)明顯。其一,不受紙型限制;其二,因?yàn)槭潜砀瘢阅芨鶕?jù)需要自由地添加、刪除行列,還能在適當(dāng)位置標(biāo)注作文所要求的字?jǐn)?shù)。
應(yīng)用前,應(yīng)先設(shè)定好試卷模板,然后進(jìn)行試驗(yàn),以找出試卷最適的格子大小和行列數(shù),需要制作稿紙時(shí),可直接在“常用”工具欄上單擊“作文稿紙”按鈕,也可以連續(xù)點(diǎn)擊“工具”,“宏”,“宏…”,打開“宏”對(duì)話框,在左側(cè)組合框中選擇名為“作文稿紙”的宏,然后單擊“運(yùn)行”,即可啟動(dòng)宏程序,在隨后出現(xiàn)的“作文稿紙?jiān)O(shè)置”窗口中,根據(jù)需要修改默認(rèn)設(shè)置,最后,單擊“確定”按鈕,程序?qū)⒆詣?dòng)繪制作文稿紙表格,如果稿紙超出一頁(yè)(或一欄),選擇稿紙中部的行刪除即可。下面圖4是在A3紙左右兩欄中分別制作的20×16、20×10稿紙。
三、導(dǎo)出導(dǎo)入
在VBA編程窗口中,分別選擇工程資源管理器中的UserForm1窗體和NewMacros模塊,導(dǎo)出UserForm1.frm、UserForm1.frx和NewMacros.bas文件。如圖5。
需要在其他電腦中使用這個(gè)程序時(shí),把備份拷貝過來(lái),啟動(dòng)VBA編程窗口,通過“文件”、“導(dǎo)入文件”將UserForm1.frm、和NewMacros.bas導(dǎo)入,在Word中就使用了。
|
|
發(fā)表留言請(qǐng)先登錄!
|