H0064
將儲存格範圍另存為圖片
>= 10.0(Office 2002)
有網友問我如何將儲存格中選取的範圍另存為圖片,這才讓我想起我曾經寫過這樣一個小程式,我將它重新整理了一下重新發表。
本範例可以選擇複製到剪貼簿或另存圖片檔,總共有三個選項可以選擇:
格線:是否顯示儲存格的格線 同時印出列和欄標題:是否顯示列和欄標題 黑白複製:是忽略儲存格的顏色
格線:是否顯示儲存格的格線
同時印出列和欄標題:是否顯示列和欄標題
黑白複製:是忽略儲存格的顏色
參 考
Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Application.CommandBars(3).Controls("RngToPic").Delete End Sub Private Sub Workbook_Open() Dim rngBtn As CommandBarControl On Error Resume Next Application.CommandBars(3).Controls("RngToPic").Delete Set rngBtn = Application.CommandBars(3).Controls.Add With rngBtn .FaceId = 246 .OnAction = "show" .Caption = "RngToPic" .TooltipText = "儲存格轉換為圖片" .Enabled = True End With Err = 0 End Sub
Sub show() CtoPForm.show End Sub Sub SavePic() Dim msg As String Dim rChart As Chart msg = "圖片另存檔案" fileSaveName = Application.GetSaveAsFilename(InitialFileName:="pic1", _ fileFilter:="Gif Files (*.jpg), *.jpg", Title:=msg) If fileSaveName <> False Then Set rChart = ActiveSheet.ChartObjects.Add(0, 0, Range(CtoPForm.RefEdit1). _ Width, Range(CtoPForm.RefEdit1).Height).Chart With rChart '去除圖表外框線 '如果把這行刪除,圖片會多外框 .ChartArea.Border.LineStyle = 0 On Error Resume Next .Paste &nbs p; '圖形格式匯出 .Export fileSaveName, "JPG" Application.DisplayAlerts = False '刪除圖表 .Parent.Delete Application.DisplayAlerts = True End With End If End Sub
Dim Print_Headings As Boolean Dim Print_Gridlines As Boolean Private Sub cmdCancel_Click() Unload Me End Sub Private Sub RangeCopy_Click() Application.ScreenUpdating = False If Me.RefEdit1.Text = "" Then MsgBox _ "請先選取儲存格範圍後,再按 ""Copy"" 鈕": Exit Sub If Range(Me.RefEdit1.Text).Areas.Count > 1 Then MsgBox "本操作介面不允許使用者多重選取範圍,請重新選取範圍" RefEdit1.Text = "" Exit Sub End If Me.Hide Me.MousePointer = fmMousePointerHourGlass '將游標設成漏斗狀 With ActiveSheet.PageSetup '儲存工作表的PrintHeadings Print_Headings = .PrintHeadings '儲存工作表的PrintGridlines Print_Gridlines = .PrintGridlines Print_BAndW = .BlackAndWhite .PrintHeadings = chkHeadings .PrintGridlines = chkGridlines .BlackAndWhite = chkcolor '將螢幕影像複製到剪貼簿 Range(RefEdit1.Text).CopyPicture Appearance:=xlPrinter, _ Format:=xlPicture '還原工作表的PrintHeadings .PrintHeadings = Print_Headings '還原工作表的PrintGridlines .PrintGridlines = Print_Gridlines .BlackAndWhite = Print_BAndW End With If Me.OptionButton1 = True Then Call SavePic Unload Me Application.ScreenUpdating = True Exit Sub End If Me.MousePointer = fmMousePointerDefault '還原預設值 MsgBox "圖片已複製至剪貼簿. 請使用編輯-貼上 貼上圖片" _ & vbCrLf & "可應用於其它Office軟體,及其它繪圖軟體" Beep Unload Me Application.ScreenUpdating = True End Sub Private Sub UserForm_Initialize() chkGridlines = True chkHeadings = True chkcolor = False End Sub
本範例不允許多重選取範圍
Popularity: 7%
發表於討論區 一般訪客留言 於 九月 7, 2010
發表於討論區 一般訪客留言 於 六月 6, 2010
發表於討論區 API函數 於 一月 19, 2010
發表於討論區 技術交流 於 一月 13, 2010
發表於討論區 一般訪客留言 by reader 於 九月 7, 2010 at 9:31 下午
發表於討論區 一般訪客留言 by kenjo 於 六月 6, 2010 at 2:55 下午
發表於討論區 API函數 by chijanzen 於 一月 19, 2010 at 1:50 下午
發表於討論區 API函數 by chijanzen 於 一月 19, 2010 at 1:11 下午
發表於討論區 技術交流 by chijanzen 於 一月 13, 2010 at 5:43 下午
GEOLOC
姓名:超級皮卡丘
網路化名: chijanzen、中國龍
經歷: