是否可以截取 Excel 中所有工作表的屏幕截图(例如通过脚本)?
看这个例子。我想以某种方式将绿色矩形中的数据导出为 JPG(或其他格式),并对所有工作表执行此操作。
我找到了这个解决方案:excel vba:将多个 excel 表导出到其指定的 jpg 文件中看起来不错,但有设置范围Range("B5:M60")
。是否可以更动态地做到这一点?
答案1
我稍微修改了提到的代码以执行以下操作。
循环遍历所有工作表
要求使用输入范围来截取屏幕截图
将 Sheetname.jpg 保存在 C:\Temp 文件夹中。文件名为 Sheetname,扩展名为 .jpg
请注意,这不会捕获任何嵌入的对象,例如插入的形状或图片等。它只会捕获您为每个工作表输入的单元格范围的屏幕截图。此外,没有严格的验证。如果您只是取消输入,代码将导致运行时错误。
代码如下。请检查这是否符合您的要求。原始代码位于这篇 SU 帖子
Sub exportpic()
Dim WS As Worksheet
Dim rgExp As Range
Dim CH As ChartObject
For Each WS In ThisWorkbook.Sheets
WS.Activate
Set rgExp = Application.InputBox(prompt:="Select Input Range", Type:=8)
rgExp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
Set CH = WS.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, Width:=rgExp.Width, Height:=rgExp.Height)
CH.Chart.ChartArea.Select
CH.Chart.Paste
CH.Chart.Export "C:\Temp\" & WS.Name & ".jpg"
CH.Delete
Next WS
End Sub