楊 建
(廣西柳工機(jī)械股份有限公司,廣西 柳州545007)
在無紙化辦公中,利用表單制作調(diào)查問卷、電子考卷等,通過表單收集問卷、答案數(shù)據(jù)以便處理。目前制作表單的軟件有Microsoft InfoPath Designer、Adobe LiveCycle Designer等軟件,填寫這些表單需要使用相應(yīng)的軟件,而在一般的計(jì)算機(jī)中缺乏安裝相應(yīng)的軟件,使填寫表單成為困難。Microsoft Word作為最常用的辦公軟件在每臺(tái)計(jì)算機(jī)上基本都有安裝,其強(qiáng)大的功能可以容易構(gòu)建、填寫表單,結(jié)合VBA、Excel對(duì)表單數(shù)據(jù)進(jìn)行收集,很方便快捷。本文通過實(shí)例詳細(xì)講解Word表單的構(gòu)建和數(shù)據(jù)收集方法,讓讀者可以通過常見的辦公軟件輕松制作出專業(yè)的調(diào)查問卷、電子考卷等,并能方便快捷地回收數(shù)據(jù),以實(shí)現(xiàn)無紙化辦公、減少錯(cuò)誤、提高工作效率。
在Word的環(huán)境下構(gòu)建表單要用到內(nèi)容控件,要求Word為2007及以上版本。下文以Word 2013為說明如何構(gòu)建表單,其它Word版本的操作類同。
單擊Word功能區(qū)“文件”選項(xiàng)卡,然后單擊“選項(xiàng)”,打開“Word選項(xiàng)”窗口。點(diǎn)擊窗口左則“自定義功能區(qū)”項(xiàng),然后在窗口右則“自定義功能區(qū)”下的組合框中選擇“主選項(xiàng)卡”,在下面的“主選項(xiàng)卡”列表中勾選“開發(fā)工具”項(xiàng),點(diǎn)擊“確定”。Word功能區(qū)出現(xiàn)“開發(fā)工具”選項(xiàng)卡,如圖1所示。
圖1 “開發(fā)工具”選項(xiàng)卡
如圖2所示框內(nèi)為構(gòu)建表單的內(nèi)容控件組。內(nèi)容控件不同于舊式窗體控件和ActiveX控件。
圖2 內(nèi)容控件組
2.2.1 格式文本內(nèi)容控件
格式文本內(nèi)容控件位于內(nèi)容控件組中的第1行第1列,其可以輸入文本、表格、圖片等對(duì)象,并能對(duì)其中的對(duì)象進(jìn)行格式化設(shè)置。
在文檔中把光標(biāo)定位到需要插入內(nèi)容控件的位置,點(diǎn)擊“格式文本內(nèi)容控件”,格式文本內(nèi)容控件插入到光標(biāo)所在位置。
選中文檔中的格式文本內(nèi)容控件,點(diǎn)擊“開發(fā)工具”選項(xiàng)卡上的“屬性”按鈕,打開內(nèi)容控件屬性窗口,如圖3所示。
圖3 格式文本內(nèi)容控件屬性窗口
“標(biāo)題”是控件標(biāo)題欄顯示的內(nèi)容?!皹?biāo)記”是控件的“Tag”標(biāo)簽屬性?!帮@示為”設(shè)置控件在文檔中的顯示樣式?!邦伾痹O(shè)置控件顯示樣式的顏色?!笆褂脴邮皆O(shè)置鍵入空控件中的文本格式”設(shè)置控件中的對(duì)象的共性格式。勾選“內(nèi)容被編輯后刪除內(nèi)容控件”后,當(dāng)控件中的對(duì)象被編輯時(shí)內(nèi)容控件會(huì)自動(dòng)刪除。勾選“無法刪除內(nèi)容控件”后,內(nèi)容控件不能刪除,但其中的對(duì)象能編輯。勾選“無法編輯內(nèi)容”后,內(nèi)容控件中的對(duì)象不能編輯,但整個(gè)內(nèi)容控件能刪除。
2.2.2 組合框內(nèi)容控件
組合框內(nèi)容控件位于內(nèi)容控件組中的第2行第2列。組合框內(nèi)容控件可以輸入或從下拉選項(xiàng)中選擇文本。組合框內(nèi)容控件通常用于單選項(xiàng)。組合框內(nèi)容控件屬性窗口如圖4所示。
圖4 組合框內(nèi)容控件屬性窗口
單擊“添加”按鈕可以添加下拉列表選項(xiàng),如圖5。其中“顯示名稱”是下拉列表顯示的文本,“值”是下拉列表顯示名稱對(duì)應(yīng)的“Value”屬性值。
圖5 下拉列表添加選項(xiàng)窗口
通過“修改”、“刪除”等按鈕可以對(duì)下拉列表的選項(xiàng)進(jìn)行編輯。
其它屬性的設(shè)置與格式文本內(nèi)容控件屬性設(shè)置相同。
2.2.3 其它內(nèi)容控件
其它內(nèi)容控件使用方法、屬性設(shè)置與上述兩個(gè)內(nèi)容控件基本相同,這里不再闡述。
以圖6的表單為例說明表單制作過程。
圖6 表單實(shí)例
先制作表格,在需要填表人填寫的地方插入內(nèi)容控件。“單位”、“聯(lián)系人”、“聯(lián)系電話”、“聯(lián)系地址”、“需求數(shù)量”、“填表人”使用純文本內(nèi)容控件,“產(chǎn)品配置”使用格式文本內(nèi)容控件,“需求產(chǎn)品型號(hào)”使用組合框內(nèi)容控件,“交貨日期”、“填表日期”使用日期選取器內(nèi)容控件,“是否特殊訂單”使用復(fù)選框內(nèi)容控件。
點(diǎn)擊“開發(fā)工具”選項(xiàng)卡的“設(shè)計(jì)模式”命令按鈕,進(jìn)入設(shè)計(jì)模式。在內(nèi)容控件開始/結(jié)束標(biāo)記之間編輯輸入內(nèi)容提示,如圖7所示。編輯完成后再點(diǎn)擊“設(shè)計(jì)模式”命令按鈕,退出設(shè)計(jì)模式。
圖7 編輯輸入內(nèi)容提示
表單作好后,還對(duì)它進(jìn)行保護(hù)設(shè)置,其目的是保護(hù)非填寫部分不被修改,填表人只能填寫、編輯內(nèi)容控件中的對(duì)象[1]。
點(diǎn)擊“開發(fā)工具”選項(xiàng)卡的“限制編輯”命令按鈕,在“限制編輯”窗中,如圖8所示,勾選“僅允許在文檔中進(jìn)行此類型的編輯”,在下面的組合框中選取“填寫窗體”,點(diǎn)擊“是,啟動(dòng)強(qiáng)制保護(hù)”按鈕,在彈出的“保護(hù)方法”對(duì)話框中可以設(shè)置保護(hù)密碼,密碼留空時(shí)為無密碼保護(hù)。點(diǎn)擊“確定”按鈕,完成表單保護(hù)設(shè)置。
圖8 限制編輯窗
把表單的數(shù)據(jù)導(dǎo)入Excel工作表中,利用Excel的強(qiáng)大功能可對(duì)數(shù)據(jù)進(jìn)行處理。把數(shù)據(jù)導(dǎo)入Excel工作表的方法是使用VBA宏代碼。
打開Excel,添加“開發(fā)工具”選項(xiàng)卡。點(diǎn)擊“開發(fā)工具”選項(xiàng)卡的“Visual Basic”命令按鈕,進(jìn)入宏代碼編寫界面。
點(diǎn)擊宏代碼編寫界面的“插入”菜單,點(diǎn)擊“模塊”,插入一個(gè)模塊。在該模塊的宏代碼編輯窗口輸入下面的代碼。
Sub讀取數(shù)據(jù)()
Dim i As Integer
Dim j As Integer
Dim R As Integer
Dim WdocName As String
Dim WdocFolder As String
‘打開對(duì)話框,選擇表單所在的文件夾:
With_
Application.FileDialog (msoFileDialogFolderPicker)‘打開對(duì)話框,選擇表單所在的文件夾
If.Show=True Then
WdocFolder=.SelectedItems(1)
End If
End With
If WdocFolder=""Then Exit Sub
'打開表單讀取數(shù)據(jù):
Dim WordAppl As Word.Application
Dim Wdoc As Document
Dim FileTryp As Variant
FileTryp=Array("docx","docm")‘設(shè)置表單文檔的兩種文件類型
On Error Resume Next
Set WordAppl=GetObject(,"Word.Application") '獲取Word對(duì)象
WordAppl.Visible=False
If Err.Number<>0 Then'如果進(jìn)程沒有Word對(duì)象,則創(chuàng)建Word對(duì)象
Set WordAppl= CreateObject("Word.Application") '創(chuàng)建Word對(duì)象
我這樣孜孜不倦地尋找白麗筠,一年后傳來了一個(gè)比較靠譜的消息。有人說,在廣東東莞見到了白麗筠。聽到這個(gè)消息,我馬上就去了那座城市。為了找到白麗筠,我必須尋遍花街柳巷,深入一家家娛樂會(huì)所。我沒有錢,穿戴寒酸,人瘦毛長,臉頰都凹陷下去了。這副形象自然不受歡迎。
End If
For i=0 To UBound(FileTryp)'每種文件類型讀取一次
WdocName=Dir(WdocFolder&"*."&FileTryp(i))'獲得文件夾下的第一個(gè)文檔文件名
Do While WdocName<>""
If WdocName=""Then Exit Do
Set Wdoc=WordAppl.Documents.Open(Wdoc-Folder&""&WdocName) '讀取文件夾下的所有表單文檔
'向Excel表導(dǎo)入數(shù)據(jù):
R=Range("A"&Rows.Count).End(xlUp).Row+1
For j=1 To Wdoc.ContentControls.Count
If R=2 Then Cells(R-1,j)=Wdoc.Content-Controls(j).Title
Cells (R,j) =Wdoc.ContentControls(j).Range.Text
Next j
Wdoc.Close
WdocName=Dir()'移到下一個(gè)表單
Loop
Next i
WordAppl.Quit
End Sub
點(diǎn)擊“工具”菜單,點(diǎn)擊“引用”,打開“引用”窗口。在“可使用的引用”列表中勾選“Microsoft Word 15.0 Object Lybrary”項(xiàng)[2]。
運(yùn)行“讀取數(shù)據(jù)”宏代碼,選擇表單所在的文件夾,該文件夾下的所有表單數(shù)據(jù)就逐行導(dǎo)入到Excel表中,如圖9所示。
圖9 從W ord表單導(dǎo)入的數(shù)據(jù)
通過Word、VBA、Excel的結(jié)合,使表單的構(gòu)建、填寫、數(shù)據(jù)的收集及分析變得更加便利,容易在無紙化辦公進(jìn)行推廣。