五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
遂平县| 怀化市| 柳州市| 威远县| 马关县| 安吉县| 达日县| 阿鲁科尔沁旗| 镇雄县| 伊宁市| 诸暨市| 锦州市| 焉耆| 尚志市| 大兴区| 九江县| 潮安县| 洞头县| 安陆市| 扎囊县| 右玉县| 遂溪县| 赤壁市| 陆川县| 南川市| 子洲县| 肥西县| 屯门区| 白银市| 海林市| 新昌县| 三门县| 乡宁县| 盐津县| 崇信县| 海城市| 合肥市| 海口市| 南投县| 勐海县| 紫阳县|