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怎麼進行編號替換。編寫不易,轉載引用請說明出處。希望大家多多支援,在此表示感謝!
相關文章
- 如何批量處理word中的表格
- js獲取table表格指定行列td單元格內容JS
- 在excel中某些單元格內批量增加相同的內容Excel
- JavaScript 獲取table表格指定行和列的單元格內容JavaScript
- JavaScript修改td單元格內容JavaScript
- JavaScript 獲取td單元格內容JavaScript
- Excel——如何使用VBA操作單元格的格式Excel
- 將table表格內容匯入到word或者Excel程式碼例項Excel
- js獲取table表格指定行和列的單元格內容程式碼例項JS
- 如何批量取消word密碼?VBA簡單程式設計解決密碼程式設計
- excel合併單元格快捷鍵 excel多個表格內容合併到一起Excel
- javascript動態修改單元格內容程式碼例項JavaScript
- 如何讓excel單元格內只能輸入指定內容?Excel
- word列表格式錯亂的處理
- Linux下使用Ansible處理批量操作Linux
- jquery實現的獲取指定行列td單元格內容jQuery
- tcom 操作word表格
- jQuery滑鼠滑過表格標題切換表格內容詳解jQuery
- Excel表格中圖片怎麼固定在單元格里(VBA方法)Excel
- 將Excel表格內容直接轉換成圖片Excel
- Excel-單元格內換行Excel
- 表格單元格點選操作(彈窗)
- MySQL使用Batch批量處理MySqlBAT
- C#操作Word之 根據標籤名清除標籤內容C#
- 表格全欄位文字識別-表格內容抽取-翔雲API掛接API
- elementui——表格的相同內容單元格合併UI
- 使用openpyxl處理表格資料
- vba-單元格程式碼
- zt 運用 Range 物件處理 Word 文件內容物件
- 大批量資料處理操作小記
- 使用 clearError 清除已處理的錯誤Error
- word 2010表格自動編號設定
- HTML怎麼讓table表格中的td單元格內容過長顯示為固定長度,多餘部分用省略號代替?HTML
- JavaScript合併表格中的內容相同的單元格JavaScript
- wps/excel計算單元格內的算式Excel
- Excel VBA 利用FileSystemObject處理檔案ExcelObject
- Word 2003表格操作方法
- 部落格內容規範