2016-09-26

將Excel中的相片給原尺寸抽離出來..

我們一般會利用Excel軟體來製作,諸如 施工紀錄 或 缺失改善前中後的照片之類的表格,提供審閱及存查,但你是否有遇到需要將Excel中的相片給抽離出來,以提供日後簡報之類的利用??

Excel 2010之前版本,接受相片匯入,卻沒有匯出相片的功能(我是沒找到,有的話記得告訴我,另Word 與 PowerPoint都有匯出JPEG的功能),利用Google大神搜了一下,似乎方法有限

1. 第一種方式最簡單,就利用複製/貼上功能 將相片貼到Word/PowerPoint/小畫家/PhotoShop之類的軟體,然後再另存檔案再利用,這方法我想三五張相片這樣處理您還可以接受,若是Excel中有一、兩百張相片要這樣處理,我想你會很快就放棄了....

2. 第二種方式是可以來處理大量相片的,他利用了Excel可以轉成網頁格式的方法,將文字與相片給抽離分開,當然你就會得到每張相片了

3. 第三中是利用第三方軟體,它會自動將檔案給抽離出來,我在網路上找到一個免費的第三方軟體Office Image Extraction Wizard ,他確實可以很簡便將相片給抽離出來,且支援很多檔案格式..

不過有點小問題,就是出來的圖片小小的,還記得嗎?我們要填入Excel表格中,都利用縮放將相片縮小到符合列印的格式區域中,這也造成圖片像素不高的原因,難道又要回去Excel把相片一張張回復成原始尺寸再來做處理??那樣子的作法跟第一種又有何不同???

因為我遇到的狀況,是需要一次抽離兩三千張的相片,不得不利用VBA來將所有相片給自動回復原尺寸,再利用第二或第三種方式來做匯出處理...我的狀況是每個工作頁都有相片,以下是讓圖片自動恢復原尺寸的程式碼,有需要的可以利用

Sub forEachWs() '主程式,自動跳轉到每個工作頁
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        ws.Select
        Call rescaleAllPicture
        ws.Select
    Next
    MsgBox "Finished !!"
End Sub

Sub rescaleAllPicture() '恢復工作頁中所有相片的比例
    ActiveSheet.Pictures.Select
        With Selection
            .ShapeRange.LockAspectRatio = msoTrue
            .ShapeRange.ScaleWidth 1, msoTrue
            .ShapeRange.ScaleHeight 1, msoFalse, msoScaleFromTopLeft
        End With
End Sub

沒有留言:

張貼留言