我尝试使用VBA代码在Excel中截取工作表的截图,然后将其保存在指定的路径中,但我无法正确保存它...
Sub My_Macro(Test, Path) Dim sSheetName As String Dim oRangeToCopy As Range Dim FirstCell As Range, LastCell As Range Worksheets(Test).Activate Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _ Cells.Find(What:="*", SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Column) Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _ SearchDirection:=xlNext, LookIn:=xlValues).Row, _ Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, LookIn:=xlValues).Column) sSheetName = Test ' worksheet to work on With Worksheets(sSheetName) .Range(FirstCell, LastCell).CopyPicture xlScreen, xlPicture .Export Filename:=Path + Test + ".jpg", Filtername:="JPG" End With End Sub
Excel不想在截取屏幕后直接执行.Export ...方法.所以我试图将图片粘贴到新图表中.Excel将图表图片保存在正确的位置,并在我的图片上添加图表...我还尝试将其粘贴到临时工作表中,但Excel不想将其导出...
任何的想法
忙着LubošSuk的想法.
只需更改图表的大小即可.见下面的脚本.
Sub My_Macro(Test, Path) Test = "UNIT 31" Dim sSheetName As String Dim oRangeToCopy As Range Dim FirstCell As Range, LastCell As Range Worksheets(Test).Activate Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _ Cells.Find(What:="*", SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, LookIn:=xlValues).Column) Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _ SearchDirection:=xlNext, LookIn:=xlValues).Row, _ Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _ SearchDirection:=xlNext, LookIn:=xlValues).Column) sSheetName = Test ' worksheet to work on With Worksheets(sSheetName).Range(FirstCell, LastCell) .CopyPicture xlScreen, xlPicture 'Getting the Range height PicHeight = .Height 'Getting the Range Width PicWidth = .Width ''.Export Filename:=Path + Test + ".jpg", Filtername:="JPG" 'REMOVE THIS LINE End With With Worksheets(sSheetName) 'Creating the Chart .ChartObjects.Add(30, 44, PicWidth, PicHeight).Name = "TempChart" With .ChartObjects("TempChart") 'Pasting the Image .Chart.Paste 'Exporting the Chart .Chart.Export Filename:=Path + Test + ".jpg", Filtername:="JPG" End With .ChartObjects("TempChart").Delete End With End Sub