循环工作表,同时将范围导出为图像

Posted

技术标签:

【中文标题】循环工作表,同时将范围导出为图像【英文标题】:Loop through worksheets while exporting range as image 【发布时间】:2017-04-05 02:07:58 【问题描述】:

我有以下 VBA 代码,可以将一系列单元格导出到指定文件夹中的 jpeg 中。我想让它遍历一个工作簿中的所有工作表。

我需要帮助在所有打开的工作簿中循环这段代码。我相信我需要: Dim WS As Worksheet,然后设置一个 If 语句,插入下面的代码,结束 if 语句,然后在最后放置一个 Next WS 让它实际循环。我的问题是,当我尝试将 if 语句 For Each WS In ThisWorkbook.Sheets If Not WS.Name = "Sheet2" Then 与下面的代码组合时,我一直收到 91 错误。

以下代码一次在一个工作表中工作。

Sub ExportAsImage()
Dim objPic As Shape
Dim objChart As Chart
Dim i As Integer
Dim intCount As Integer
'copy the range as an image
Call ActiveSheet.Range("A1:F2").CopyPicture(xlScreen, xlPicture)
'remove all previous shapes in the ActiveSheet
intCount = ActiveSheet.Shapes.Count
For i = 1 To intCount
    ActiveSheet.Shapes.Item(1).Delete
Next i
'create an empty chart in the ActiveSheet
ActiveSheet.Shapes.AddChart
'select the shape in the ActiveSheet
ActiveSheet.Shapes.Item(1).Select
ActiveSheet.Shapes.Item(1).Width = Range("A1:F2").Width
ActiveSheet.Shapes.Item(1).Height = Range("A1:F2").Height
Set objChart = ActiveChart
'clear the chart
objChart.ChartArea.ClearContents
'paste the range into the chart
objChart.Paste
'save the chart as a JPEG
objChart.Export ("C:\Users\------\Desktop\Test\" & Range("B2").Value &     ".jpg")
'remove all shapes in the ActiveSheet
intCount = ActiveSheet.Shapes.Count
For i = 1 To intCount
    ActiveSheet.Shapes.Item(1).Delete
Next i
End Sub

【问题讨论】:

请编辑您的帖子以包含您的所有代码。 【参考方案1】:

将此添加到您的模块中:

Sub MAIN()
    Dim sh As Worksheet
    For Each sh In Sheets
        sh.Activate
        Call ExportAsImage
    Next sh
End Sub

并运行它。 (无需修改代码)

【讨论】:

以上是关于循环工作表,同时将范围导出为图像的主要内容,如果未能解决你的问题,请参考以下文章

引用全局命名范围而不引用工作表

使用 VBA 将超链接字段写入循环内的另一个工作表范围

将工作表导出为 csv

如何使用多张工作表和不同的工作表名称将 dfs 导出为 excel

Excel:将工作表导出为 CSV 文件的宏,无需离开我当前的 Excel 工作表

将熊猫样式表导出到图像文件