【乾貨】Excel操作Word導出圖片

2020-10-20 VBA說

這篇文章講一個Word批量導出圖片的案例,下節課會講圖片導入Word的案例。

一、實際案例引入

這次遇到的案例需求:將檔案信息表中的個人圖片導出,以身份證號命名。具體表格結構如下的對應關係如下圖截圖中所示。

有n個格式一樣的基礎信息表,我們要做的就是把圖片導出,以身份證號來命名。

關於本篇所有配圖(均來自於網絡,侵刪)

二、思路及代碼
Q:

Word中圖形對象有哪些?

A:

在word中的圖形對象有InlineShape對Shape對象。其中InlineShape對象的是嵌入到文本層的圖片,是指將圖像作為文字處理,在排版上以文字的方式進行排版。而Shape對象是懸浮於文本之上位於圖形層,可以自由浮動,並且可以放置在頁面上的任何位置

導出的時候也需要根據具體情況,來具體選擇循環的圖形對象。當然,你可以對這兩種對象分別循環導出。

關於Word VBA導出圖片有好幾種方法,這裡我比較推薦下面兩種:

■另存為html方法(導出後無損,推薦)

手動操作步驟:

核心代碼如下:

Sub doc另存為HTML()
    Dim WordDOC As Object
    Dim Path, Name As String
    Set WordDOC = Documents.Open("C:\Brildo\Test.docx")
    Path = WordDOC.Path
    Name = WordDOC.Name
    ActiveDocument.SaveAs2 FileName:=Path & "\" & Split(Name, ".")(0), FileFormat:=wdFormatHTML
    ActiveDocument.Close (0)
End Sub

多個Word文檔批量導出圖片操作的話,對於一些特定要求(比如對圖片名有要求),就稍微麻煩些,這就需要打開html文件夾並修改文件名,然後再把圖片複製出來。

■複製到Excel後再導出圖片(本文採用的方法)

大致思路就是,Word文檔中的圖片複製到Excel中,然後Excel再利圖表導出圖片的功能導出。關於Excel如何批量導出圖片,看我之前的文章

完整代碼:

Sub 導出Word圖片()
    Dim PathSht As String, wb As Workbook
    Application.ScreenUpdating = False
    For Each shp In ActiveSheet.Shapes '清除本表中的圖片
        shp.Delete
    Next
    With Application.FileDialog(msoFileDialogFolderPicker) 'FileDialog對象,選擇文件夾對話框
        If .Show Then PathSht = .SelectedItems(1Else Exit Sub
    End With
    PathSht = PathSht & IIf(Right(PathSht, 1) = "\""""\")
    myfile = PathSht & "保存圖片"
    fol = Dir(myfile, vbDirectory)
    If fol = "" Then MkDir myfile '新建存儲圖片的路徑
    myname = Dir(PathSht & "*.doc*")
        Call wd_pic(PathSht)
    MsgBox "完成!"
    Application.ScreenUpdating = True
End Sub

Sub wd_pic(p As String)
    Set wordapp = CreateObject("word.application")
    Set sht = ThisWorkbook.ActiveSheet
    f = Dir(p & "*.doc*"'結合Do While循環獲取Word文檔
    Do While f <> ""
        Set WordDOC = wordapp.Documents.Open(p & f)     '逐個打開Word文件
        wordapp.Visible = True
        shenfen_num = l(WordDOC.Tables(1).cell(72).Range) '獲取身份證號
        For i = 1 To WordDOC.Shapes.Count '對文檔中的圖片進行遍歷
            WordDOC.Shapes(i).Select '選中圖片
            wordapp.Selection.Copy '複製圖片。這裡不能合併為一句,否則報錯
            sht.PasteSpecial Format:="圖片(增強型圖元文件)", Link:=False, DisplayAsIcon:=False
            Set Excel_Shape = sht.Shapes(1'因為當單個doc中存在圖片量過多,均複製到xls中造成數據量過大,
            Excel_Shape.ScaleHeight 1True, msoScaleFromMiddle
            Excel_Shape.ScaleWidth 1True, msoScaleFromMiddle
            '這裡採用了複製一個進入xls,再另存圖片後,立即刪除xls中的圖片數據,所以遍歷時,index永遠是1
            Excel_Shape.Copy
            With sht.ChartObjects.Add(00, Excel_Shape.Width, Excel_Shape.Height).Chart
                .Parent.Select '64位必須加這句,否則導出後是空白圖片
                .Paste
                .Export p & "保存圖片\" & shenfen_num & ".bmp"
                .Parent.Delete '刪除第二次複製產生的數據
            End With
            Excel_Shape.Delete '刪除第一次複製產生的數據
        Next i
        WordDOC.Close '關閉當前Word文檔
        f = Dir
    Loop
    wordapp.Quit '退出Word程序
End Sub
Function l(a) '清除Word表格中的不可見符號
    l = WorksheetFunction.Clean(a)
End Function

三、知識點

■選擇文件夾對話框

如果文件夾位置不確定,想獲取人為選擇的文件夾路徑,就要用到以下代碼塊。

    With Application.FileDialog(msoFileDialogFolderPicker) 'FileDialog對象,選擇文件夾對話框
        If .Show Then PathSht = .SelectedItems(1Else Exit Sub
    End With
    PathSht = PathSht & IIf(Right(PathSht, 1) = "\""""\")

關於FileDialog對象更多功能,可以閱讀這篇文章:

■循環打開Word文檔

這裡是打開代碼文檔路徑下的文檔,如果需要打開其他路徑的文檔,結合上面的代碼。

Sub 循環打開Word文檔框架()
    Set doc = CreateObject("word.application")
    f = Dir(ThisWorkbook.Path & "\*.doc")
    Do While f <> ""
        Set wd = doc.Documents.Open(ThisWorkbook.Path & "\" & f)
        doc.Visible = True
               '你要操作的核心代碼
        f = Dir
        wd.Close False
    Loop
    doc.Quit
    MsgBox "完成!"
End Sub

■新建文件夾

該段代碼作用:判斷D盤是否有例子文件夾,如果沒有,則新建一個名為「例子」的文件夾。

Sub 新建文件夾()
    myfile = "d:/例子"
    f = Dir(myfile, vbDirectory)'利用Dir函數,先獲取文件夾
    If f = "" Then MkDir myfile'找不到該文件夾,會返回空值。
End Su

相關焦點

  • excel圖片導出的方法
            excel教程中圖片導出的操作應該怎樣進行呢?  假設一個excel工作表中有上百張圖片,如何批量導出到某一文件夾呢?  excel圖片導出的方法如下介紹。
  • 微信聊天記錄導出word?手機操作一步到位!
    微信聊天記錄導出word?手機操作一步到位!手機操作一步到位!生活中我們經常誤刪微信聊天記錄,其實備份是個最好解決的方法,我們生活中其實遇到需要備份數據的地方其實很多,很多人覺得備份數據需要花很長的時間,因此好的備份方法十分重要,可以簡單並且很快的備份並導出你的微信數據,一起來看看吧!
  • 網際網路海量新鮮文章批量導出&海量關鍵詞內容規劃可導出Excel分析
    支持導出word和txt格式文檔 正因為素材搜索的內容是即時獲取,那麼現支持批量導出,也代表著用戶將獲取到實時的素材,據為己用。 導出的文檔格式,可根據自身需求選用,如需純文本的用戶,可選擇txt格式文檔,如需包含文章圖片的素材,可選擇word格式文檔。
  • 微信好友如何導出?微信好友導出excel
    微信好友導出excel 2020年03月20日 10:58作者:網絡編輯:宏偉   微信好友如何導出微信好友導出excel。在日常工作中,我們難免會刪除微信好友,但微信裡保存了大量微信好友以及客戶資料,對於經常使用微信社交的朋友,都有一個共同的煩惱,那就是怕一個不小心誤刪了微信好友,不要慌,這款微信導出助手來幫你!
  • 原來,word文檔轉為excel表格的過程如此簡單
    不過,相對於把word文檔導出成為pdf文件,大家好像對word轉excel這一操作沒有很了解,不知道具體的方法。之前,我碰到過很多有表格信息的word文檔,所以上網找了很多word轉excel的解決方法。
  • 胖·觀察|在線協作文檔導出之痛?主流協作文檔導出評測
    這裡我們要界定什麼是在線協作文檔,首先其具備基本的在線文檔編輯功能,能夠支持word、excel的基本操作,其次其要支持多人在線編輯,提供評論批註功能,最後文檔要支持導出,支持word、markdown(MD格式)、txt等基本文檔格式。
  • word轉excel有什麼好用的方法?具體word轉excel操作分享
    word轉excel有什麼好用的方法?當我們在word中匯總了一些數據時,想要將其內容轉換到excel表格中,一般大家都是怎麼操作呢?如果大家不會對這兩種文件進行轉換的話,可以嘗試一下小編以下的方法,這樣我們就可以很快的完成word到excel表格的轉換了。
  • 怎麼在origin中導出圖片?導出圖片的具體操作
    Origin是一款功能強大的軟體,可以繪製一些複雜且專業的圖形,所以下面來看看在origin中導出圖片的具體操作。Origin軟體版本:10.5.6.6235遊戲娛樂立即查看怎麼導出圖片 1.首先,啟動軟體,打開已編輯並保存的opj格式文件,如下圖,2.然後,在已繪製的圖片窗口的空白區域,右鍵單擊,選擇菜單中的Export page
  • 批量識別電子發票excel快速導出?
    識別電子發票對於開票量大的企業來說一直大都是一件令人頭疼的事情,每次利用增值稅發票綜合服務平臺開票的時候,都只能逐條錄入信息,如果一天要識別幾十上百張發票以及導出就非常耗費時間,且都在重複操作。為了解決這一困擾,我發現了一款實用性很高的小程序,今天我就把它安利給大家,來幫助我們財務人員最大化的提升效率,節約時間成本和人工成本,批量識別電子發票以及快速導出!1.使用支付寶,搜索:理票俠2.進入理票俠,領取理票俠專屬郵箱。
  • 辦公軟體操作技巧22:如何從word文檔中批量導出多張圖片
    在日常工作中,我們有時需要提取word文檔中的一些圖片,可能有人會逐張點擊,然後一個個的另存為,這在文檔中圖片較少的情況下還可行,但是如果圖片較多,這樣的方法就太麻煩了,還會耗費我們大量的時間。其實我們可以通過以下方法來批量導出word文檔圖片。
  • excel轉換成word怎麼操作?excel轉換成word詳細步驟
    相信日常辦公中,很多朋友都曾經嘗試過將Excel表格中的信息複製到word裡吧?有的信息可以完美地被複製進來,但是有的信息可就沒有那麼簡單了,很多時候都會出現格式混亂的情況,這樣的情況,是不是也會讓你覺得很無奈很尷尬呢?
  • pdf轉word不限頁數的轉換器有嗎?這樣操作更方便
    平時,小夥伴們習慣在wps把建好的word文檔導出為pdf文件(方便發送、打開),那麼大家知道在哪裡可以把pdf轉word(方便修改內容)嗎? 一般情況下,我都會使用迅捷PDF轉換器進行pdf轉word操作,這款軟體可以不限頁數轉換pdf文件格式為word、excel以及ppt等文檔文稿。它還有多個版本,包括有app、pc以及web,小夥伴們可以任意選擇。接下來,我給大家帶來把pdf不限頁數轉為word的方法步驟,耐心閱讀下去哦。
  • Word圖片導出原圖的幾種方法,如何批量導出一次搞定!
     Word文檔轉網頁導出圖片我們可以將文檔先保存為網頁格式的文件,「文件」-「另存為」-「這臺電腦」選擇路徑,然後將「保存類型」設為「網頁 html」格式,保存即可。打開保存後的路徑,這裡會多出一個文件夾,我們直接點開文件夾就能看到所有的圖片都在這裡了。
  • 微信導出通訊錄:微信好友導出excel詳細教程
    微信導出通訊錄:微信好友導出excel詳細教程。微信是目前社會中最流行的社交工具了,不僅如此,我們的衣食住行、以及與好友間的語音視頻聊天都在微信,可隨著微信通訊錄裡的好友增加,我們在清理微信好友時也經常會誤刪!這個好友恢復方法很實用,趕緊收藏。
  • 02-怎麼在word文檔中動態操作excel數據
    如何在word文檔中動態操作excel數據在excel中可以完美高效的操作數據提高工作效率,製作好表格,複製到word文檔中。解決方法:將excel數據複製到我認得文檔中的具體操作方法如下:第一步:在excel工作表中選擇需要複製的內容,如圖:第二步:單擊【剪貼版】工作組中的【複製】按鈕如圖:第三步:在打開的word文檔中,將光標定位需要粘貼的位置,單擊【剪貼板】工作組中的【粘貼】按鈕,如圖:
  • 職場辦公小技巧:在word中批量插入圖片並統一命名
    不知道大家在工作當中有沒有遇到這樣的情況:在WORD文檔中想插入圖片,卻不能保證大小格式一樣怎麼辦?如果數量較少的話,我相信大家還是有辦法解決的!比如可以先插入一張圖片後設置統一的格式進使用快捷鍵F4進行上一步操作就可以解決了!
  • 微信好友怎麼導出excel?微信導出原來這麼簡單
    微信好友怎麼導出excel?微信導出原來這麼簡單 2020年01月19日 15:00作者:黃頁編輯:黃頁 微信好友怎麼導出
  • Excel和Word數據交互讀取(一)
    我把我整理的乾貨分享給大家,希望各取所需。我們用Excel代碼操作Word,直接把Excel中的數據寫入Word。(附件後臺回覆:"試題"獲取)Sub 導出題庫()    
  • 簡潔實用的Excel倉庫管理手機導出表格
    對於常規的倉庫管理表格可以實現手機來操作並且導出excel表格、這是一個不錯的主意。我們就從簡單的操作和授權開始、好友協同進出庫操作和增加產品都可以實現功能、對於常規的自已操作可以把生成的條形碼貼在產品上、這樣可以更好的實現進出庫存的盤點操作。最後我們可以輕鬆的導出報表實現excel表格列印和分享給翎導。其實我們在加上好友的同時可以加上相關翎導實現數據共享。
  • Java如何操作Word, Excel, PDF文檔?
    forum=40&thread=382666&tstart=0&trange=15  Java Excel API 文檔   http://www.andykhan.com/jexcelapi/   1、一個jacob操作Word的例子,其他操作excel,pdf的sample裡都有  import java.io.File