当前位置: 首页 > 知识库问答 >
问题:

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

淳于博
2023-03-14

我有以下VBA代码,用于将一系列单元格导出为jpeg格式,并将其导出到指定文件夹中。我想让它在一个工作簿中循环所有工作表。

我需要帮助将此代码循环遍历所有打开的工作簿。我相信我需要:将WS作为工作表,然后设置一个if语句,插入下面的代码,结束if语句,然后在最后放一个Next WS让它实际循环通过。我的问题是,当我尝试将我的if语句,对于每个WS InThisWorkbook.Sheets如果不是WS.Name="Sheet2"然后,与下面的代码组合时,我总是得到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个答案

越信鸥
2023-03-14

将此添加到您的模块中:

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

并运行它。(不需要修改你的代码)

 类似资料:
  • 我编写了以下简单的C#控制台应用程序,用于从Excel工作簿导出所有图表。它工作正常,除非打开文档后图表没有滚动到,在这种情况下会生成一个空的图像文件。 我尝试了几次滚动到该对象的失败尝试;程序底部注释掉的行(

  • 简介:我想通过使用嵌入的Google脚本中生成的数组来更改Google sheets EmbeddedChart中的数据,而无需先将数据倒入单元格。 Long:我有一个绑定脚本,可以更新先前存在的电子表格。我修改了js中的数据,并希望更改一个嵌入式图表以使用生成的数据数组,而不将数据放在表中。从技术上讲,我不在乎它是一个嵌入的图表,我只想用一个图表制作一个摘要页面,而不想用额外的表格污染文档。不希

  • 这个问题涉及一个运行在Ubuntu12.04上的Eclipse Kepler实例。我有一个用例图,我需要将它作为图像文件包含在文档中。我右键点击.di文件,选择导出所有图...然后选择PDF作为文件格式。作为回报,我将得到一个错误窗口,其中包含以下内容: 会话数据: eclipse.buildid=4.3.2.M20140221-1700 java.version=1.6.0_26 java.ve

  • 我有一个excel工作簿,每张工作表有一个图表和多个工作表,我试图将所有图表作为图片导出到PowerPoints中。问题是我的当前代码无法工作。我的代码出现错误: > 简报按预期打开 将复制我在运行前选择的活动工作表的图表 复制的图表粘贴在PowerPoint中 PowerPoint创建下一张幻灯片 现在问题再次复制同一工作表中的同一图表!我希望代码移动到下一张工作表,选择上面的图表,并在下一张幻

  • 问题内容: 给出以下列表 我想创建一个新列表,该列表由将当前值和下一个值相加的元素组成。它将包含 1 小于元件。 像这样: (从0 + 1、1 + 2和2 + 3) 这是我尝试过的: 问题是我不断收到此错误: 我很确定会发生这种情况,因为当我得到(3)的最后一个元素时,我无法将其添加到任何东西中,因为这样做超出了它的值(添加3之后就没有值了) )。因此,我需要告诉代码在2处停止,同时仍引用3进行计

  • 我有一个带有a:Z列的Google工作表选项卡(“数据”),如果这些列中的a:N列不为空,我需要创建一个选项卡,从(“数据”)中提取所有行。 我尝试了查询importrange,查询importrange,但无法破解代码: 尝试#1:=如果(为空(“数据!A1:N1”),导入(“https:…”,“数据!A1:Z100”),,) 尝试#2:=查询(重要(https:...,数据!A1: Z1),选