word(2010)使用VBA完成批處理操作-批量清除表格某單元格內容
word VBA 的使用案例
VBA是什麼?
VBA(Visual Basic for Applications)是Visual Basic的一種巨集語言,是在其桌面應用程式中執行通用的自動化(OLE)任務的程式語言。主要能用來擴充套件Windows的應用程式功能,特別是Microsoft Office軟體。它也可說是一種應用程式視覺化的 Basic 指令碼。
1993年由微軟公司開發的應用程式共享一種通用的自動化語言--------即Visual Basic for Application(VBA),實際上VBA是寄生於VB應用程式的版本。1994年發行的Excel 5.0版本中,即具備了VBA的巨集功能。(以上為百度百科上的解釋,百度百科地址)
為什麼要使用VBA?
上篇文章(文章地址)Word巨集的運用,其中也說明了Word巨集缺點比較明顯,“通過錄製得到的往往沒有手動編寫程式碼得到的更加精緻和靈活”,在實際運用中,我們想對文字進行批處理時,往往存在其它的變化因素,單純的通過手動錄製巨集,沒有辦法實現最終目的,此時就需要靈活的編寫VBA程式碼來達到預期的結果。
VBA的運用例項—批量清除表格某單元格內容
工作中經常遇到對word的批量操作,如果重複的操作達到上百甚至更多後,也是不小的工作量,若手動處理很容易出現因為疲勞導致的處理錯誤、遺漏等問題。而此時只會簡單的錄製巨集,就會發現有時使用錄製的巨集去處理,並不能很好的解決我們的問題,下面跟著我一起分析一個案例,我會詳細說明如何根據需求先對文件進行分析,再設計解決方案,最後進行程式碼的實現。(有程式設計基礎的,建議直接看程式碼)
如圖所示:
目的:將設計單中的"測試結果"和"問題標識"列內容清空。
文件其它部分展示
文件分析:
- 若要清除設計單9的"測試結果"和"問題標識"列,我們只需要將8~11行的4、5列內容替換為空即可,程式碼實現為
ActiveDocument.Tables(1).Cell(8, 4).Range.Text = ""
,表示將第1個表格的8行4列內容寫成空,後面再更改行數和列數,就能實現將8~11行的4、5列內容替換為空。 - 我們繼續往下看設計單10,發現了一個嚴重的問題,設計單9的步驟有4步,而設計單10的步驟有2步,每個測試用例設計單內的步驟是不固定的! 若要清除設計單9的"測試結果"和"問題標識"列,需要將8~9行的4、5列內容替換為空,如果此時使用清除設計單9的程式碼去執行設計單10,就會將設計單10內容打亂。同理,若設計單11的步驟數為5,那就會出現遺漏一列沒有清除掉。可以形象的理解為一把鑰匙只能開啟一扇門,此時使用固定的行數已經無法達到目的,我們就需要琢磨下怎麼製作一把萬能鑰匙呢?
建議先思考分析下問題再往下看,相對於得到魚,我更希望大家得到漁!
設計解決方案:
下面為我個人的分析思路和設計解決方案:通過對設計單9、10的分析,每次清除的單元格的行數是不固定的,列數是固定的4、5,所以我只需要確定每次清除的行數是正確的,就能夠達到最終目的。我先對比了設計單9、10,發現表格的前7行和後4行為固定模板,因此可以確定我要清理的行數一定是從第8行開始,結束的行數一定是倒數第5行(暫定為LastR行),此時就得到了要清理的行數:8行~LastR行,這就得到每次要清理的單元格座標(行數和列數)。現在只需要將8~LastR行的4、5列內容替換為空即可。
程式碼的實現
Sub 批量清除表格某單元格內容()
For t = 1 To ActiveDocument.Tables.Count
LastR = ActiveDocument.Tables(t).Rows.Count - 4
For r = 8 To LastR
ActiveDocument.Tables(t).Cell(r, 4).Range.Text = ""
ActiveDocument.Tables(t).Cell(r, 5).Range.Text = ""
Next r
Next t
End Sub
註釋
在Sub 批量清除表格某單元格內容()
For t = 1 To ActiveDocument.Tables.Count
'這裡迴圈是為了清除所有表格,ActiveDocument.Tables.Count為統計文件的表格數
LastR = ActiveDocument.Tables(t).Rows.Count - 4
'這裡LastR計算結果為倒數第5行,Tables(t).Rows.Count為統計表格的行數
For r = 8 To LastR
'這裡迴圈是為了清除8行~LastR行的4、5列單元格
ActiveDocument.Tables(t).Cell(r, 4).Range.Text = ""
'單純的文字替換,將表格t的r行,4列的文字替換為空
ActiveDocument.Tables(t).Cell(r, 5).Range.Text = ""
Next r
Next t
End Sub
若不知道程式碼寫哪?怎麼執行?可以先閱讀我的上篇文章(文章地址)Word巨集的運用,先從巨集的錄製開始學習。
結語
以上舉例只是VBA運用的一個案例-批量清除表格某單元格內容,至於其他的具體運用,有興趣的可以自行了解。師傅領進門,修行靠個人!主要是對文件的分析,並不是所有情況都適合用VBA進行批處理,不要為了用VBA而去用VBA,不然只會適得其反!至於程式碼的實現並不複雜,可以去網上查閱API手冊(Word Visual Basic for Applications (VBA) 參考 | Microsoft Docs)。解決問題的思路才是重要的!
本文僅個人總結,存在不合理處,希望大家及時指出更正。下篇將舉例說明Word怎麼進行編號替換。編寫不易,轉載引用請說明出處。希望大家多多支援,在此表示感謝!
相關文章
- elementui——表格的相同內容單元格合併UI
- 在excel中某些單元格內批量增加相同的內容Excel
- JavaScript合併表格中的內容相同的單元格JavaScript
- 表格單元格點選操作(彈窗)
- Linux下使用Ansible處理批量操作Linux
- JavaScript 獲取td單元格內容JavaScript
- 如何使用awk處理文字內容
- 如何讓excel單元格內只能輸入指定內容?Excel
- js 表格合併單元格JS
- 表格td單元格合併
- vue表格合併單元格Vue
- excel合併單元格快捷鍵 excel多個表格內容合併到一起Excel
- Excel表格中圖片怎麼固定在單元格里(VBA方法)Excel
- element中表格合併單元格
- Word 表格內容不會自動轉到下一頁
- DataGridView設定單元格的提示內容ToolTip詳解View
- JavaScript 獲取表格指定td單元格JavaScript
- Qt高仿Excel表格元件-支援凍結列、凍結行、內容自適應和合並單元格QTExcel元件
- 使用openpyxl處理表格資料
- wps的excel中的單元格限定輸入的內容Excel
- QT之——QTableWidget拖拽單元格並替換內容(進階)QT
- 使用 clearError 清除已處理的錯誤Error
- robotframework 使用jQuery處理頁面display隱藏內容FrameworkjQuery
- 補: Rest 風格請求處理的的內容補充(1)REST
- 表格輸出內容
- 如何從 ABAP 偵錯程式裡提取某個內表的內容用於單元測試
- elementui表格動態資料單元格合併UI
- 使用 React.cloneElement 動態處理 JSX 和字串內容ReactJS字串
- 通過生成內容和CSS網格佈局為空單元格新增樣式CSS
- Excel VBA 利用FileSystemObject處理檔案ExcelObject
- PHP 讀取 WORD 內容PHP
- PHP讀取WORD內容PHP
- 合併具有文字框的Word文件:VBA程式碼批次操作
- Excel-單元格內換行Excel
- SpringBatch批量處理策略SpringBAT
- table表格單元格橫向和屬性合併
- table 表格單元格橫向與縱向合併
- 使用IText7和miniExcel處理pdf並輸出內容Excel