當前位置:編程學習大全網 - 編程語言 - 如何使用VBA調用EXCEL裏面的圖片和數據生成PPT裏面的圖片和數據?

如何使用VBA調用EXCEL裏面的圖片和數據生成PPT裏面的圖片和數據?

本次案例來自網友提問:需要從600個Excel文件中導出每個文件中的2個圖片,之前由於時間原因,回復比較簡單沒有給出具體實現方法,今天花時間整理寫成圖文,希望小夥伴們都可以學會。

壹、 數據模擬

為了更加真實的還原提問者遇到的問題,我們需要準備600個且都包含有2個圖片的Excel文件。壹兩個文件我們可以手動新建就可以了,這可是600個文件吶!

別擔心,既然我們是用VBA來解決問題,解決這種事情重復機械的勞動,當然不是什麽難事。圖片我們用以下兩個代替,放到當前文件目錄下,分別命名為test1.png和test2.png,模擬數據時將test1.png插入到第壹個表,test2.png插入到第二個工作表。

test1.png

test2.png

分步操作過程:

第壹步:新建壹個Excel文件,將它另存為.xlsm格式。

啟用宏工作簿

第二步:打開新建好的.xlsm文件,按快捷鍵ALT+F11進入VBE界面。

進入VBE界面

第三步:在VBE工程種插入壹個模塊。

插入模塊

第四步:在剛剛新建的模塊中粘貼以下代碼。

Sub 生成600個含圖片的Excel文件()

'關閉刷新,防止屏幕抖動

Application.ScreenUpdating = False

'定義變量i

Dim i As Integer

'定義i從1循環到600

For i = 1 To 600

'新增壹個工作簿

Workbooks.Add

'往工作簿的第壹個工作表中插入圖片test1.png

ActiveWorkbook.Sheets(1).Pictures.Insert(ThisWorkbook.Path & "\test1.png").Select

'往工作簿的第二個工作表中插入圖片test2.png

ActiveWorkbook.Sheets(2).Pictures.Insert(ThisWorkbook.Path & "\test2.png").Select

'將工作簿存儲到當前路徑下

ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & i & ".xlsx"

'關閉工作簿

ActiveWorkbook.Close

'繼續循環新建其他工作簿

Next

'恢復屏幕刷新

Application.ScreenUpdating = True

'處理完成給出提示

MsgBox "600個含圖片的Excel文件生成完成!", vbInformation, "提示信息"

End Sub

第五步:執行VBA代碼,生成我們需要的600個Excel文件。

執行VBA代碼

連貫操作演示:

操作演示

二、 圖片導出

600個案例文件已經準備好了,接下來就是導出文件中的圖片。

解決思路:

1. 壹個個的找出當前目錄下的所有Excel文件。

2. 打開找到的Excel文件。

3. 壹個個的找出Excel文件中的工作表。

4. 找出工作表中的所有圖片對象。

5. 把找到的每壹個圖片導出到當前目錄下。

如果文件不多的情況下,按上面的思路手動操作導出也是可以的,其實通過VBA來解決問題也是要先把復雜問題進行簡單化,壹步步進行分解問題,最終形成完整解決方案。VBA代碼使用方式在上面數據準備過程中已經有詳細描述了,本次我們直接來運行下代碼,實現導出文件中的圖片。

Sub 導出當前路徑下工作簿中的圖片()

Dim wk$ '定義為工作簿文件

Dim i As Integer '定義工作簿中的工作表數量

Dim ii As Integer '定義為工作表中的對象個數

'關閉刷新,防止抖動

Application.ScreenUpdating = False

'遍歷第壹個工作簿文件

wk = Dir(ThisWorkbook.Path & "\*.xlsx")

'遍歷到的文件名不等於空的情況下

Do While wk <> ""

'如果文件名稱和當前的名稱是不壹樣的。

If wk <> ThisWorkbook.Name Then

'打開遍歷到的工作簿

Workbooks.Open (ThisWorkbook.Path & "\" & wk)

'對打開的工作簿文件進行以下操作

With ActiveWorkbook

'循環出工作簿中的每壹個工作表

For i = 1 To .Sheets.Count

'循環出工作表中的每壹個對象shape

For ii = 1 To .Sheets(i).Shapes.Count

'臨時變量,統計shape的個數

k = k + 1

'復制shape對象

.Sheets(i).Shapes(ii).Copy

'創建壹個圖表對象,寬高與與對象保持壹致

With .Sheets(i).ChartObjects.Add(0, 0, .Sheets(i).Shapes(ii).Width, .Sheets(i).Shapes(ii).Height).Chart

'把圖片插入進去

.Paste

'通過圖表對象的導出方法,把圖片導出到當前目錄下

.Export ThisWorkbook.Path & "\" & wk & "_" & k & ".png"

'刪除圖表

.Parent.Delete

End With

Next

Next

'關閉打開的工作簿

.Close False

End With

End If

'繼續遍歷下壹個工作簿

wk = Dir

Loop

'開啟屏幕刷新

Application.ScreenUpdating = True

End Sub

圖片導出演示

  • 上一篇:生產經理個人簡歷範文
  • 下一篇:我要怎麽學習經濟學呢?
  • copyright 2024編程學習大全網