
為什麼想寫巨集呢?我覺得就是追求快與精確。最近我實在懶得一張一張截圖(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,依此類推。(此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