Word VBA 文字提取(1) —— 天蠶土豆到底有多麼 「恐怖如斯」?

2021-02-13 楊氏在線教學

大家好!這段時間發現論壇上越來越多的同學開始詢問Word VBA的問題,想必各位在學習一段時間之後,單純提高Excel效率已經無法滿足自己日漸狂野的內心了。所以本周開始,我們就通過公眾號為大家講解幾個最常用的Word VBA技巧,也算對我們視頻課程做的一點補充。

用Word當然是要處理文字。所以我們今天先給大家介紹第一個常用技巧——怎樣從Word文檔中查找關鍵字、並提取它的所在段落。比如,網絡上一直有江湖傳言,天蠶土豆最愛使用 「恐怖如斯」 四個字,其頻繁程度已經令人髮指。即使楊老師這樣一章網文都沒讀完過的工作狂,也在知乎上早有耳聞。不過本著嚴肅客觀的學術精神,我們畢竟應該親自檢驗一下:這個問題到底是真實存在,還是大家誇張的形容。所以,我們不妨親自做一個小程序看看這個詞到底出現過多少次,並且把所有包含這四個字的段落都提取到一個新的文檔裡,以便我等學習一下:最正宗的 「天蠶派」 文法裡要怎樣使用 「恐怖如斯」 。

首先,楊老師從一位愛讀網文的朋友那裡要來了一份《鬥破蒼穹》的文本文件(聲明:寫完本文隨即刪除此文件,楊老師沒有時間讀網文,讀也會支持正版)。然後用Word打開這個文本文件,再保存為 .docm 格式,以便在裡面編寫VBA程序。

接下來當然就是打開Word VBA編輯器,開始設計程序邏輯。對於本例任務,既然我們的目標是 「把符合條件的某個段落寫入新文檔」 ,所以一個很自然的想法就是 「循環遍歷當前文檔的每一個段落,每循環到一個段落,就檢查其是否符合條件 」。那麼怎樣循環遍歷每個段落呢?我們在《提高篇》和《實戰篇》中都講過:代表整個 Word 文檔的Document 對象有一個集合屬性 Paragraphs,裡面存放了很多Paragraph對象,而每一個Paragraph對象就是一個段落。因此,使用 For Each 就可以遍歷當前文檔中的每一個段落。

這裡的 ThisDocument 對象在視頻課程沒有介紹過,不過《深入淺出Excel VBA》一書中卻講解過一個類似的對象—— Excel 中的 ThisWorkbook。簡單的說,ThisDocument 對象代表的就是「本VBA程序所在的這個文檔」。由於我們的代碼與《鬥破蒼穹》原文處於同一個文檔中,所以 ThisDocument.Paragraphs 就是《鬥破蒼穹》的所有段落。

在找到每一個段落之後,我們又該怎樣判斷該段落是否 「符合條件(也就是包含 『恐怖如斯』)」 而應寫入新文檔呢?首先,假如程序中用變量 p 代表當前正在處理的段落,那麼 就像《提高篇》中介紹的,p.Range 屬性就代表該段落中所有文字、版式等信息;再進一步,p.Range.Text 代表的就是這個段落中的純粹文字內容。所以,只要判斷這個文字內容中是否包含 「恐怖如斯」 就能知道段落 p 該不該被作為結果。而在VBA中,判斷文字包含的最簡單寫法,就是我們在《基礎篇》中介紹的 Instr 函數!

除了 Text 外,段落對象的 Range 屬性還提供了一個 Information 方法,只要給它提供不同的參數,它就可以返回給我們有關該段落的各種信息。例如,p.Range.Information (wdActiveEndPageNumber )  就可以告訴我們 「段落p的內容處於文檔中的第幾頁」。所以利用這個方法,我們不僅可以把符合條件的段落提取到新文檔中,而且還可以標記出該段落在原文檔的位置,以便檢索。

最後說來說去,我們到底怎樣把找到的文字放進新文檔中呢?這個可以算是《全民一起VBA》課程中最常出現的例行操作之一了:(1)在程序開始時用 Documents.Add 創建換一個新文檔,並指定一個變量(比如 docNew )代表它;(2)每次發現有符合條件的段落時,就用 docNew.Content.InsertAfter 方法將指定的字符串添加到該文檔的末尾。Document 的這個 Content 對象我們在視頻課程中沒有介紹過,不過顧名思義,就是文檔全體內容的含義,而 InsertAfter  自然就是在後面添加,相信大家一讀就懂。

以上就是本例中所有可能用到的知識點。利用它們,我們就能寫出一個提取程序,核心代碼總共只有 6 行:

程序的代碼含義已經用注釋語句標清,接下來我們運行一下,就會得到一個新的Word文檔,裡面就是史上最全的天蠶派恐怖如斯權威例句:

統計一下,「恐怖如斯」 一共出現了18次。相比於總計 5879頁513萬字 的體量,楊老師倒覺得還真不算濫用 ,個人以為網上的指責有點誇大其詞了。不過能在幾年裡連寫500萬字,不得不說作者的耐力著實是「恐怖如斯」!

給作者正名後意猶未盡,楊老師又把程序稍作修改,讓它只輸出頁碼到Excel中,隨後做了極簡單的頻度分析,如下圖所示。

可以看到,在作者寫前3000頁時,每一千頁出現三個「恐怖如斯」,非常平均;而在寫作3000頁到4000頁時,一千頁裡就出現了六次,相比之前可以算是 「高發」 了。假如作者寫作本書時的更新速度是恆定的,那麼可以不負責任的推斷,網絡上對於本書「濫用恐怖如斯」的評價也許就出現在這一時期。同樣,或許就是因為作者此時注意到了這種評價,所以在後面寫作第4000到6000頁時格外留神,每一千頁只使用了一次「恐怖如斯」,比前期作品還要少很多。當然,以上分析只是基於對這些數字的猜測,楊老師並沒有與網絡輿情進行參照查證。如果同學們喜歡這一題材,可以自行搜集整理相關網絡話題的演變數據、並結合百度熱度等工具,做一個完善的 「網際網路文學創作平臺中網絡評論對作者行文風格的影響研究」 (一瞬間回到了當年指導畢業生選題的日子……)

當然,這本小說只是用來舉個例子,本文真正希望大家了解的是使用Word VBA實現指定段落提取的思路和知識點。不過需要指出的是——本文所用的方法雖然易於理解(都是《全民一起VBA》中講過的知識和思路),但並不是速度最快的方法。比如本程序在楊老師電腦上運行時,整整耗時20秒,而如果採用另一個技巧——Word VAB的 Find 方法,則會在 2 秒鐘內全部搞定!那麼怎樣使用 Find 方法呢?我們下周就給大家科普一下。

相關焦點

  • 恐怖如斯是什麼意思 居然竟恐怖如斯是什麼梗
    很多朋友在網上都看到了恐怖如斯,居然恐怖如斯,這裡小編來告訴大家是什麼意思吧!  恐怖如斯是什麼梗  小說裡面,經常有某某怎麼如斯這種說法,然而主角的每個對手都是…如斯,已用爛  而天蠶土豆的作品被用的最多  比如鬥破蒼穹中就經常會有這樣的一段  七段鬥之氣強者居然恐怖如斯  八段鬥之氣強者居然恐怖如斯  九段鬥之氣強者居然恐怖如斯
  • 恐怖如斯,倒吸一口涼氣,給我破……還有哪些網絡小說經典句子?
    恐怖如斯,倒吸一口涼氣,給我破....還有哪些網絡小說經典句子?網絡小說總是能夠給我們帶來很多的生活樂趣,也許很多的老書蟲已經是把看小說當作自己生活中的一部分了。相信大家會發現,很多網絡小說中,會經常看到一些比較熟悉的句子,這些句子使我們隱隱約約的感到很是熟悉,那麼這些句子到底是哪位網絡小說作者創作出來的?還有哪些網絡小說經典句子?比如什麼滴溜溜,手指風輪般的掐訣。恐怖如斯這句經典的網絡名言,相信大家都是不陌生的吧。來自作者天蠶土豆的鬥破蒼穹作品中的經典名句。
  • 《帝霸》過分了,一個詞用了幾十遍,比《鬥破》還「恐怖如斯」
    《帝霸》過分了,一個詞用了幾十遍,比《鬥破》還「恐怖如斯」(以下圖片均來自網絡,若有侵權,告之則刪!)經常看網絡小說的讀者,在看小說的時候,經常會碰到一些頻繁使用的詞彙,就像天蠶土豆的《鬥破蒼穹》一書中,反覆提到「恐怖如斯」這個詞。似乎每一位路人或者修真者,在遇到強者對決時,總會有人先是倒吸一口涼氣,然後不由地感慨一聲,XX強者真是恐怖如斯。
  • 繼《鬥破》「恐怖如斯」後,《帝霸》也創造出了新的專屬詞!
    繼《鬥破》「恐怖如斯」後,《帝霸》也創造出了新的專屬詞!網絡小說中,有時候一句話都能出現幾十次,幾千章的小說,一句話反覆用,就生怕讀者不知道有這麼一個詞似的,你要是出現十次八次的,估計也就自動被讀者忽視了,但一章就出現了這麼多次,幾個意思?
  • 新作《元尊》又「廢柴逆襲」,帶你看天蠶土豆的作品合集
    有這樣一個邏輯:你喜歡一本小說,就去搜這個作者的其他作品,大致都是你喜歡的類型。然後再去這個作者的書評區,評論區,微博裡看,看這個作者抨擊,或者調侃誰,那麼他抨擊或者調侃的人的作品,未必是一個類型,但是好看無疑。
  • 天蠶土豆小說排名,《鬥破蒼穹》被力壓,它竟登榜首?令人咋舌!
    天蠶土豆所寫經典之作也有好幾本的,但哪部才能稱得上封神之作呢?哪部作品才能登上榜首呢?top4.《靈路》搜索量:186萬網評:此乃天蠶土豆坑爹老套路小說《大主宰》的前傳,就是牧塵與洛璃相遇以及其身為血禍者被驅逐出靈路的前塵舊事。主人公反正心智遠超常人,認識些心性純良的朋友,對手反正就是內心陰狠,工於心計。姬玄這個前幾百章的對頭很明顯比牧塵蠢。top3.
  • 網絡小說裡那些用的「看了直想吐」的詞,「恐怖如斯」只是小意思
    網絡小說裡那些用的「看了直噁心」的詞,「恐怖如斯」只是小意思每年光是太監了的網絡小說就有上百萬本,更別說總體的數量了。天蠶土豆的「恐怖如斯」成了他的經典標籤,已經被嘲笑了若干年。然而這都不算什麼,還有一些更誇張的,會讓你看了直噁心,有一種想吐的感覺,因為這些詞用的次數實在是太太太多了。無論男頻還是女頻,十本穿越小說裡有九本都是這個詞:陌生的天花板,腦袋有點發暈,接著就是中二丫鬟出場:小姐你醒啦,老爺!夫人,小姐醒啦!。
  • 淺談縱橫小說排行榜第三,天蠶土豆新作《元尊》
    首先我們來看看天蠶土豆的這四本書:《鬥破蒼穹》《大主宰》《武動乾坤》《元尊》,前三本書和《元尊》有一些好玩的聯繫。除了有了前兩部的教訓,主角的正宮從兩個變成一個之外,主角從人設到背景到各種設定到經歷種種一路下來都只是名字有區別好吧。簡直就是地獄級難度的找不同。更可笑的是在《大主宰》裡還硬是最後讓蕭炎,林動和牧塵走到一個水平上,土豆你是生怕他們仨有區別是嗎?
  • 《鬥破蒼穹》恐怖如斯的「斯」是什麼意思?書友的神回復我給滿分
    網絡小說中有一個說法,叫做「新瓶裝舊酒」。什麼意思呢?就是新小說老套路,劇情沒有啥創新。雖然劇情方面創新不多,但詞語方面小編感覺創新的蠻多的,比如說天蠶土豆《鬥破蒼穹》的專用詞語「恐怖如斯」,看過的書友估計都不陌生。
  • VBA代碼大全030:用vba強制關閉word應用程式
    點擊上面的話題標籤,可以訂閱感興趣的話題,下次有更新的時候就可以第一時間收到了。
  • 天蠶土豆的五部小說:《大主宰》上榜,第二部讓天蠶土豆一夜成名
    天蠶土豆的五部小說:《大主宰》上榜,第二部讓天蠶土豆一夜成名1.《魔獸劍聖異界縱橫》是一部異界魔幻小說,由某網白金作家天蠶土豆所著。本書首發於某網,後由某出版社出版。故事主要講述了一個正在玩魔獸的少年劉楓穿越來到到了一個奇妙的世界。
  • 網絡作家天蠶土豆的小說怎麼樣?我總結了十點,請朋友們多多指教
    在眾多的網絡作家中,天蠶土豆是筆者比較佩服的一位網絡作家,他的小說總數可能不多,但是在筆者看來,天蠶土豆的幾本小說卻都是高質量的文字,《魔獸劍聖異界縱橫》《鬥破蒼穹》《武動乾坤》《大主宰》,每一部都相當不錯,就是《元尊》這部小說,也是很有特點的,也應該算是網絡文學中的扛鼎之作了。
  • 一分鐘帶你熟悉完因鬥破蒼穹封神的作家天蠶土豆五部出書作品
    【作家】天蠶土豆(註:以下排名是按作者出書順序排的)【小說書名】:《魔獸劍聖異界縱橫》【優書網】:評分5.1分在當時那個yy越級挑戰裝壁文中算是典範之作,而且這部小說貌似也是土豆作品中少見多女主(開後宮類型)。主角帶劍聖技能穿越異界,修煉華夏內功,修煉裝逼撩妹子,最後打個「遊戲」回地球。 土豆也是憑著此書當年折桂新人王。放到如今恐怕是劇毒。反正諸位根據個人口味自行選擇是否拜讀。
  • 天蠶土豆:《鬥破蒼穹》不是我最好的作品
    說起網絡玄幻文學,天蠶土豆絕對稱得上是圈內碩果纍纍的頂級作家。出道十年,他共創作玄幻小說1000餘萬字,每部作品都熱銷各大閱讀渠道,且長期雄霸各大榜單,一年版稅就有6000萬,個人年流水高達9個億,是2017年中國福布斯精英榜唯一上榜的網絡作家。
  • 盤點2010十大巔峰網絡小說,天蠶土豆第一,辰東、唐家三少落榜
    第十名:《間客》貓膩間客一本科幻機甲類小說,是貓膩作品裡面最具有批判精神的小說,人物刻畫更有稜角,作為中原五青之一,文筆自然不必多說,因為作品需要一些文化積累顯得有些枯燥,貓膩雖然白金,但是一直不溫不火,不過每本都是改編的潛力,比如《慶餘年》。
  • Excel VBA 提取word表格信息
    有時候需提取word表格信息到Excel表,例如下表在Word裡面,有很多類似
  • 天蠶土豆攜新作回歸,三年340萬字將鬥破武動擠下榜,口碑逆天
    天蠶土豆攜新作回歸,三年340萬字將鬥破武動擠下榜,口碑逆天1.《元尊》天蠶土豆天蠶土豆最新作品,全網訂閱過億的恐怖存在,遠超鬥破武動主宰等書,堪稱網文第一。究竟是蟒雀為尊,還是聖龍崛起,凌駕眾生?這是氣掌乾坤的世界,磅礴宏偉,一氣可搬山,可倒海,可翻天,可掌陰陽乾坤。世間源氣分九品,三品稱玄,六品成天,九品號聖。
  • Word與Excel用VBA交互(二)-批量生成檔案
    昨天和小夥伴們分享了用VBA把Excel的內容寫入到Word的表格中,生成一個一個Word的方法今天和小夥伴們分享用VBA把Excel的內容寫入到Word文字中間去
  • 天蠶土豆和伊芙蕾雅結婚照曝光 伊芙蕾雅黑歷史門事件咋回事
    今天,網絡小說界和電競圈被同一條新聞轟炸了,著名網絡作家天蠶土豆迎娶了LOL界女神級解說伊芙蕾雅。兩人的結婚照曝光,雙方粉絲都一臉蒙圈。這倆人什麼時候走到一起的呢?看起來八竿子也打不到一起去啊?  這就涉及到一個大家都想知道的問題,天蠶土豆和伊芙蕾雅是怎麼認識的?
  • 揭秘天蠶土豆們背後的故事!
    人如其名,無論多麼荒誕的筆名,都或許是潛意識裡作者自己的內心認同,如果一個人不認同這個名字他是不會用作筆名的,所以自然不會是胡亂取名的。而按照周易的說法,就是在取名的那一時刻,作者自己和宇宙的五行陰陽產生了共振。