鄭培寅 曹艷杰 余志遠
摘 要:Excel和Word為Office辦公軟件的兩種組件,在文字處理、數(shù)據(jù)統(tǒng)計分析方面有著強大的功能。在具體工作中,兩者的數(shù)據(jù)交互極為常見。本文主要介紹在大批量數(shù)據(jù)背景下,通過VBA技術實現(xiàn)從Word文檔中提取信息到Excel表格,實現(xiàn)數(shù)據(jù)的快速、準確、自動轉(zhuǎn)換。
關鍵詞:Excel VBA;Word表格;Excel;批量提取
中圖分類號:TP391.13文獻標識碼:A文章編號:1003-5168(2019)16-0035-02
Abstract: Excel and Word are two components of Office office software. They have powerful functions in word processing and data statistical analysis. Data interaction between them is very common in work. This paper mainly introduced how to extract information from Word document to Excel table by VBA technology under the background of mass data, so as to realize fast, accurate and automatic conversion of data.
Keywords: Excel VBA;Word table; Excel;batch extraction
1 應用背景
目前,Office在各行各業(yè)的應用非常廣泛。而Word和Excel作為最常用的兩款工具,具有非常強大的文字和數(shù)據(jù)處理功能,兩者之間的數(shù)據(jù)交換也非常方便,如從Excel表格批量提取數(shù)據(jù)到Word文檔,可以使用Word中的“郵件合并”功能實現(xiàn)。但是,并不是所有的工作都能通過常規(guī)手段輕松實現(xiàn),而Office為此提供了各個組件之間交互的工具,即VBA(Visual Basic Application),用于解決一些較為特殊的問題[1]。
部分單位因之前信息管理的局限性或其他原因,很多數(shù)據(jù)分散地存儲在Word表格中,而Word表格形式的數(shù)據(jù)很難進行數(shù)據(jù)查詢、匯總分析等操作,也很難直接作為數(shù)據(jù)源錄入數(shù)據(jù)庫。在面對繁雜、龐大的信息數(shù)據(jù)時,使用常規(guī)方法可能會耗費更多的人力和時間成本。此時,借助Office自帶的二次開發(fā)工具VBA將能很好地處理此類問題,極大提高工作效率和準確度。
2 應用實例
在現(xiàn)實工作中,需要從Word表格中提取信息的情況較多,如個人簡歷、黨員信息、檔案信息及各種申請表、審批表等[2]。本文以某單位檔案標簽信息的提取為例,說明如何從大量Word表格中提取信息到Excel。
表1為某部門檔案標簽信息,共有檔案號、管理部門、檔案類型、地址、所有人、存檔日期、保存期限、頁數(shù)等8個字段信息,若按常規(guī)方法將大批量該類文檔中的信息復制到Excel中,將耗費大量精力,并且很難保證正確率。由此,可通過VBA技術實現(xiàn)該功能。在使用VBA之前,首先應啟用Excel開發(fā)工具功能,同時在宏設置中選擇啟用所有宏。設置完成后新建一個Excel文件,在工作簿sheet1中按順序錄入8個字段作為標題。
上述工作完成后,選擇“開發(fā)工具”選項卡,打開Visual Basic編輯器,在編輯器中插入一個模塊,并將下面代碼復制到模塊中。本案例實現(xiàn)的代碼如下:
Sub 提取信息()
Dim wdApp As Word.Application
Dim curDoc As Word.Document
Dim fpath, filename, fn As String
Dim i As Integer
Set wdApp = CreateObject("word.Application") ?'新建Word對象
With Application.FileDialog(msoFileDialogFolderPicker)
打開Word存放目錄并提取路徑
If .Show = False Then Exit Sub
fpath = .SelectedItems(1) & "\"
End With
filename = Dir(fpath & "*.docx")
Do While filename <> ""
fn = fpath & filename
Set curDoc = wdApp.Documents.Open(fn) '打開Word文件
i = 2 ? ?'從表格第2行開始復制
Sheet1.Cells(i, 1)=curDoc.Tables(1).Cell(6, 3)
Sheet1.Cells(i, 2)=curDoc.Tables(1).Cell(1, 1)
Sheet1.Cells(i, 3)=curDoc.Tables(1).Cell(2, 1)
Sheet1.Cells(i, 4)=curDoc.Tables(1).Cell(3, 1)
Sheet1.Cells(i, 5)=curDoc.Tables(1).Cell(4, 1)
Sheet1.Cells(i, 6)=curDoc.Tables(1).Cell(5, 1)
Sheet1.Cells(i,7)=curDoc.Tables(1).Cell(5, 3)
Sheet1.Cells(i,8)=curDoc.Tables(1).Cell(6, 1)
復制相應表格內(nèi)容到當前Excel
i=i+1
curDoc.Close False
filename = Dir '繼續(xù)下一個word文件
Loop
wdApp.Quit
Set wdApp = Nothing
MsgBox "信息提取完畢!", , "提示"
End Sub
上述代碼主要定義了一個Word應用程序?qū)ο?,并打開文件對話框,用戶可以通過對話框選擇Word文檔存放的目錄,并將Word對象指向存在該目錄中的*.docx(可根據(jù)實際需要修改文件類型)文件,然后從Word文檔的表格中提取相應信息到當前Excel表格。本實例假設每個Word文檔中存放了一個表格,其中curDoc.Tables(1)語句中的“1”即為該Word文檔中的第一個表格。如果每個Word文檔中有多個表格,則可使用curDoc.Tables.Count語句統(tǒng)計該Word文檔中的表格數(shù)量,并選擇提取某個表格中的某些信息。
在上述代碼復制到新建的模塊之后,在Excel中插入一個按鈕控件(見圖1),將該控件指向已生成的宏“提取信息”,點擊該按鈕,選擇用戶文件目錄即可開始信息提取。在本實例中,信息提取后對格式進行簡單修改,結果見表2。提取完成后,即可對Excel表格中的數(shù)據(jù)進行匯總分析。
3 結語
應用Excel VBA技術從Word表格中提取信息已在工作中得到廣泛應用,并取得了良好的使用效果。特別是目前很多單位都在進行數(shù)據(jù)庫的建設和檔案資料的數(shù)字化,通過Excel向數(shù)據(jù)庫中導入信息是最為常用的方法,因此,該應用首先通過VBA技術將信息提取至Excel,成功解決了采用常規(guī)處理時大量繁雜重復的工作,提高了工作自動化程度。在實際工作中,可根據(jù)不同情況具體分析,適當修改VBA代碼,以適應不同的表格類型,達到快速準確提取信息的效果。
參考文獻:
[1]Excel,Home.Excel 2007 VBA實戰(zhàn)技巧精粹[M].北京:人民郵電出版社,2013.
[2]顧?;? VBA在Word和Excel數(shù)據(jù)交互中的應用[J].南通職業(yè)大學學報,2003(3):49-50.