|
本帖最后由 Nsp=娜!再来# 于 2023-11-19 09:27 编辑
请教解决因【方法Faste'作用于对象' Chart'时失败】无法生成图片的问题
我想将以下单元格区域都分别生成图片a1,a2,a3,a4,a5,a6,a7
Sheets("工作表").Range("A1:A11")
Sheets("工作表").Range("A13:A23")
Sheets("工作表").Range("A25:A35")
Sheets("工作表").Range("A37:A47")
Sheets("工作表").Range("A49:A59")
Sheets("工作表").Range("A61:A71")
Sheets("工作表").Range("A73:A88")
运行下面代码时错误' 1004' :
方法Faste'作用于对象' Chart'时失败,
错误代码指向【myChart.Chart.Paste】
工作表<TempSheetForChart>总是无法删除,
尽管我把For i = 1 To 7逐个修改为For i = 1 To 1,For i = 2 To 2,For i = 3 To 3的逐个执行VBA都一样出错,
尽管我生成1张图片后关闭《请教.xlsm》,再执行VBA也一样出错,
恳请帮助。
请教.rar
(18.58 KB, 下载次数: 1)
- Sub 把excel表格单元格区域转化为图片()
- Dim strPath As String
- Dim Rng As Range
- Dim myChart As ChartObject
- Dim ws As Worksheet
- ' 设置路径和要复制的区域
- strPath = ThisWorkbook.Path & ""
- For i = 1 To 7
- If i = 1 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A1:A11")
- Else
- If i = 2 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A13:A23")
- Else
- If i = 3 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A25:A35")
- Else
- If i = 4 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A37:A47")
- Else
- If i = 5 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A49:A59")
- Else
- If i = 6 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A61:A71")
- Else
- If i = 7 Then
- Set Rng = ThisWorkbook.Sheets("工作表").Range("A73:A88")
- Else
- '--------------------
- End If
- End If
- End If
- End If
- End If
- End If
- End If
- On Error Resume Next
- Application.DisplayAlerts = False
- Sheets("TempSheetForChart").Delete
- Application.DisplayAlerts = True
- On Error GoTo 0
- ' 新建一个工作表来放置临时图表
- Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
- ws.Name = "TempSheetForChart"
- ' 将区域复制为图片
- Rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
- ' 在新工作表中创建图表
- Set myChart = ws.ChartObjects.Add(Rng.Left, Rng.Top, Rng.Width, Rng.Height)
- myChart.Chart.Paste
- ' 设置图表边框为无
- myChart.Chart.ChartArea.Format.Line.Visible = msoFalse
- ' 导出图片
- myChart.Chart.Export Filename:=strPath & "a" & i & ".png", FilterName:="png"
- ' 删除临时工作表
- Application.DisplayAlerts = False
- ws.Delete
- Application.DisplayAlerts = True
- Next i
- End Sub
复制代码
|
|