最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Word VBA丨一鍵導(dǎo)出文檔所有圖片

2022-03-12 16:10 作者:莫淺北  | 我要投稿

不知道你有沒有遇到這種情況:

寫完論文正在做答辯 PPT,而 PPT 中的大部分內(nèi)容都是 Word 論文中的圖片;做實(shí)驗(yàn)的截圖都保存在 Word 文檔中,而圖片需要做進(jìn)一步處理,比如重點(diǎn)標(biāo)注……

如果頻繁遇到這種需要「從Word文檔批量提取圖片」的情況,怎么辦?

這里我通過(guò)編寫 VBA 代碼,輕松實(shí)現(xiàn)這個(gè)功能:

完整代碼見文末。

如果你想了解代碼是如何實(shí)現(xiàn)的,可以繼續(xù)往下看。

手工實(shí)現(xiàn)法

通常來(lái)說(shuō),批量提取 Word 中的圖片,有兩種方法:一種是另存為網(wǎng)頁(yè)格式,另外一種則是將它作為壓縮文件進(jìn)行解壓,提取其中的媒體元素(圖片)

當(dāng)然,要想通過(guò) VBA 實(shí)現(xiàn)這個(gè)功能,我們首先看一下正常的操作是什么,然后用 VBA 代碼來(lái)“復(fù)述”一下就可以了。

1丨另存網(wǎng)頁(yè)法

我們打開一個(gè) Word 文檔,另存為,在保存的文件類型中,選擇網(wǎng)頁(yè)格式,注意不是單網(wǎng)頁(yè)形式:

接著,我們就可以在保存的路徑下,看到自動(dòng)生成的一個(gè) XXXX.files 的文件夾,打開此文件夾,就可以看到我們保存好的圖片了:

不過(guò),Word 中的圖片,在這里你會(huì)看到兩個(gè),一個(gè)是小的縮覽圖需要?jiǎng)h掉,另外一個(gè)才是清晰的圖片。

2丨壓縮文件法

其實(shí)我們的 Word 也是一種壓縮文件,里面存放圖片、文字、版式等信息,因此,我們就可以把它視作壓縮文件來(lái)打開。

當(dāng)然,這里有兩種方法,一種是選擇打開方式——解壓軟件:

另外一種,則是先將文檔的后綴名更改為.zip,然后使用默認(rèn)程序打開。

我們解壓這份文件,在解壓后的文件夾下,我們可以看到有很多的文件與文件夾,我們依次打開「Word-media」就可以找到提取的圖片了。

每個(gè) Word 圖片只保存了一張,不用我們自己再去挑選,并且,圖片質(zhì)量上會(huì)更好一些。

VBA 實(shí)現(xiàn)法

好了,那么接下來(lái)就是 VBA 的環(huán)節(jié)了,如何通過(guò) VBA 代碼實(shí)現(xiàn)這一過(guò)程。

這里由于第一種方式,產(chǎn)生的圖片數(shù)量不等,且圖片格式不確定,不好實(shí)現(xiàn)完全自動(dòng)化,這里只考慮第二種方式。

首先,要在 VBA 中解壓文件,我們可以使用 shell Folder 對(duì)象的 CopyHere 方法:

其中 vItem 參數(shù)可以是一個(gè)文件的完整路徑,也可以是一個(gè) FolderItem 對(duì)象,或者 FolderItems 集合對(duì)象。

特別要注意的是,vItem 參數(shù)一定要以 Variant 類型傳入,否則會(huì)沒有任何響應(yīng)。

vOptions 參數(shù)可以設(shè)置一些顯示模式,比如設(shè)置為 4,在解壓縮 zip 文件時(shí)不會(huì)顯示進(jìn)度條。設(shè)置為 16,如果彈出對(duì)話框?qū)⒛J(rèn)全選是。

經(jīng)過(guò)測(cè)試,這段代碼無(wú)法直接解壓把后綴名為 .docx 的文件。因此,我們需要先重命名文檔,可以使用 VBA 中的 Name As 語(yǔ)句:

當(dāng)然,我們這里是無(wú)法對(duì)當(dāng)前激活的文檔重命名,因此,我們可以先拷貝一份文檔,可以使用 Word.documents 的 saveas2 方法。

需要注意,需要保存為docx格式,否則之后解壓出的文件可能會(huì)與這里的程序不同

這里與 Excel 的 VBA 不同,沒有后臺(tái)偷偷保存的方法,SaveAs2 方式保存后,Word 會(huì)打開另存后的文檔,導(dǎo)致該文件被鎖定,無(wú)法使用上面的解壓方法。

因此,我們需要先關(guān)閉自動(dòng)打開的文檔,并打開原始文檔

通過(guò)上面這段代碼,我們已經(jīng)可以將文件進(jìn)行解壓了,但這里的保存路徑是寫在代碼中的,不能由用戶自定義,不是特別方便,因此,我們可以使用 VBA 的文件夾選擇對(duì)象,由用戶做出選擇

這樣,解壓后的所有文件,就可以保存到用戶選擇文件夾中了。

但我們會(huì)發(fā)現(xiàn),這里的文件夾比較多,用戶無(wú)法一眼看到導(dǎo)出的圖片,因此,我們可以刪除那些無(wú)關(guān)的文件及文件夾。

刪除文件可以使用 kill 方法,而刪除文件夾可以使用 RmDir 方法。但刪除文件夾方法,如果文件夾內(nèi)有文件,會(huì)報(bào)告錯(cuò)誤。因此,我定義了這樣的一個(gè)函數(shù),你可以刪除文件夾及里面的文件:

另外,我們的圖片文件夾層級(jí)比較深,我們需要把它移動(dòng)到用戶指定的文件夾,需要使用文件對(duì)象中的 move 方法,同樣,我們定義一個(gè)通用函數(shù):

為了進(jìn)一步提升用戶體驗(yàn),我們可以在程序運(yùn)行完成后,提示用戶操作已完成,并打開對(duì)應(yīng)的文件夾

至此,再稍微完善一下細(xì)節(jié),一個(gè)比較通用的「批量導(dǎo)出當(dāng)前文檔的圖片」工具就做好了。

完整代碼

整體代碼如下:

完結(jié),撒花!

這樣,只需要打開任何一個(gè)文檔,使用快捷鍵 Alt +F11?打開 VBA 編輯器,在左側(cè)找到 normal 這個(gè)模板文件,右鍵新建模塊,將上面的代碼拷貝進(jìn)去:

之后,返回 Word 頁(yè)面,按Alt + F8,打開執(zhí)行宏窗口,選擇運(yùn)行 ExtractPicture 就可以了:


之后使用也僅需重復(fù)第二個(gè)執(zhí)行步驟。當(dāng)然,也可以把這個(gè)功能添加到自定義選項(xiàng)卡中,或者可以學(xué)習(xí)一下 Ribbon 自定義。之后如果有時(shí)間,我也會(huì)專門講解。


最后

如果你想批量導(dǎo)出多個(gè)文檔的圖片,則可以在這部分代碼前,添加用戶選擇文件的對(duì)話框,并且,循環(huán)用戶打開的文件,然后執(zhí)行這里的操作,最后,關(guān)閉打開的文檔,繼續(xù)下一循環(huán)。


如果你想夸夸我或者有想吐槽的,可以到我的個(gè)人公眾號(hào)中找我~


Word VBA丨一鍵導(dǎo)出文檔所有圖片的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
京山县| 广东省| 永泰县| 闽侯县| 石景山区| 饶平县| 兰坪| 苏州市| 北碚区| 隆昌县| 台江县| 永丰县| 白朗县| 舞阳县| 曲周县| 襄樊市| 大名县| 苏尼特左旗| 梨树县| 师宗县| 鄂伦春自治旗| 灯塔市| 威远县| 林周县| 辽宁省| 高唐县| 武定县| 汾阳市| 商水县| 大关县| 鸡泽县| 巩留县| 阿城市| 建瓯市| 东莞市| 镇原县| 高雄市| 科尔| 苗栗市| 门头沟区| 镇原县|