EXCEL巨集(VBA語法)自動篩選並將資料截圖後另存成圖片

攝影師:Negative Space,連結:Pexels

為什麼想寫巨集呢?我覺得就是追求快與精確。最近我實在懶得一張一張截圖(excel的圖),在跟好友討論之後,弄出了「自動篩選並將資料截圖後另存成圖片」的語法,根據不同的使用情境,我會提供給大家兩個版本,再請大家依據自己檔案所需,另行改寫成適合自己的使用版本吧!

看完這組code的註解,你可以學習到

1. 工作表一可以自動篩選與截圖,篩選條件變數放在工作表2的A欄。

2.工作表一可以自動篩選與截圖,但本身就有1、2、3可做篩選變數,但建議1、2、3前面要有前綴文字,例如案例1、案例2,才不會於篩選時無法順利分割。

版本一:自動篩選與截圖,但變數在另外的工作表。

Sub 自動篩選截圖程式()
Set NAMESHEET = Sheets("工作表2")
Set CSHEET = Sheets("工作表1")
Crow = NAMESHEET.Range("A" & Cells.Rows.Count).End(xlUp).Row
'計算第A欄有幾行(列),以利後面使用
For j = 1 To Crow
'從哪行起始
Name = NAMESHEET.Cells(j, 1)
'工作表2的A欄
CSHEET.Rows(1).AutoFilter 1, Name       '*** 請修改你的自動篩選條件 ***
      'Name為變數
   'Rows跟Autofilter都是在指篩選器的選取位置
        CSHEET.UsedRange.CopyPicture '使用範圍儲存格的螢幕影像複製到剪貼簿
        
            With ActiveSheet
            With .ChartObjects.Add(1, 1, .UsedRange.Width, .UsedRange.Height)
                .Chart.Paste                                           '貼上 圖片
                .Chart.Export Filename:="D:\" & "TEST\" & Name & ".jpg"
'需修改路徑(圖片存檔位置)
                .Chart.Parent.Delete
               
            End With
           
        .Rows(1).AutoFilter
        End With
        Next j
 
 
 
Application.ScreenUpdating = True
 
MsgBox "跑好了", vbOKOnly
 
End Sub

版本一產出成果

需篩選的工作表1
存放變數的工作表2
截圖後另存的圖片預覽結果

版本二:自動篩選與截圖,已知變數規律,例如案例1、案例2,依此類推。(此code有指定活躍的分頁,所以不適用在多個分頁轉換。)

Sub 自動截圖程式()
    Dim i As Integer
 
Application.ScreenUpdating = False
 
With ActiveSheet
   
    For i = 1 To 20 '指定變數
       .Rows(3).AutoFilter 2, "案例" & i       '*** 請修改你的自動篩選條件 ***

   'Rows跟Autofilter都是在指篩選器的選取位置
        .UsedRange.CopyPicture '使用範圍儲存格的螢幕影像複製到剪貼簿
        
            With .ChartObjects.Add(1, 1, .UsedRange.Width, .UsedRange.Height)
                .Chart.Paste                                           '貼上 圖片
                .Chart.Export Filename:= "D:\" & "TEST \" & i & ".jpg"
'需修改路徑(圖片存檔位置)
                .Chart.Parent.Delete
               
            End With
       
        Next i
   
.Rows(3).AutoFilter
'Rows指篩選器的選取位置
 
End With
 
Application.ScreenUpdating = True
 
MsgBox "跑好了", vbOKOnly
 
End Sub

發表者:光點

一個相信 神的平凡女子,本業是一個系統分析師,喜歡分享、喜歡笑,也喜歡紀錄生命中各種體會到的美好點滴。

發表迴響