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