Excel vba宏复制所有图表两次,而不是一次

Excel vba宏复制所有图表两次,而不是一次,excel,vba,Excel,Vba,此vba宏将所有图表复制到临时工作表,它工作正常,但似乎将每个图表复制两次而不是一次。如何修改代码,使其不会复制每个图表 Sub macro1() Dim i As Long, j As Long, k As Long Dim adH As Long Dim Rng As Range Dim FilePath As String: FilePath = ThisWorkbook.Path & "\" Dim sht As Worksheet, shtSource As Workshee

此vba宏将所有图表复制到临时工作表,它工作正常,但似乎将每个图表复制两次而不是一次。如何修改代码,使其不会复制每个图表

Sub macro1()

Dim i As Long, j As Long, k As Long
Dim adH As Long
Dim Rng As Range
Dim FilePath As String: FilePath = ThisWorkbook.Path & "\"
Dim sht As Worksheet, shtSource As Worksheet, wk As Worksheet
'===================================================================
'===================================================================
Sheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "ALL"
Set sht = ActiveSheet
'===================================================================
Application.ScreenUpdating = False
'===================================================================
'Excluding fixed tab, copying all charts from all tabs to ALL
For Each wk In Worksheets
    If wk.Name <> "fixed" Then
        Application.DisplayAlerts = False
            j = wk.ChartObjects.Count
                For i = 1 To j
                    wk.ChartObjects(i).Activate
                    ActiveChart.ChartArea.Copy
                    sht.Select
                    ActiveSheet.Paste
                    sht.Range("A" & 1 + i & "").Select
                 Next i
        Application.DisplayAlerts = True
    End If
Next
Sub宏1()
我长,j长,k长
黯淡的adH和长的一样
变暗Rng As范围
将文件路径设置为字符串:文件路径=此工作簿。路径&“\”
将sht设置为工作表、sht源设置为工作表、wk设置为工作表
'===================================================================
'===================================================================
Sheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name=“全部”
设置sht=ActiveSheet
'===================================================================
Application.ScreenUpdating=False
'===================================================================
'排除固定选项卡,将所有图表从所有选项卡复制到所有
工作表中的每项工作
如果wk.Name“已修复”,则
Application.DisplayAlerts=False
j=wk.ChartObjects.Count
对于i=1到j
工作.图表对象(i).激活
ActiveChart.ChartArea.Copy
快速选择
活动表。粘贴
sht.范围(“A”&1+i&”)。选择
接下来我
Application.DisplayAlerts=True
如果结束
下一个

您正在循环浏览每个工作表,包括刚刚添加图表的新工作表。这就是你重复的原因。您需要从循环中排除新添加的工作表

For Each wk In Worksheets
    If wk.Name <> "fixed" and wk.Name <> "ALL" Then
        Application.DisplayAlerts = False
            j = wk.ChartObjects.Count
                For i = 1 To j
                    wk.ChartObjects(i).Activate
                    ActiveChart.ChartArea.Copy
                    sht.Select
                    ActiveSheet.Paste
                    sht.Range("A" & 1 + i & "").Select
                 Next i
        Application.DisplayAlerts = True
    End If
Next
工作表中每项工作的

如果wk.Name“已修复”和wk.Name“全部”,则
Application.DisplayAlerts=False
j=wk.ChartObjects.Count
对于i=1到j
工作.图表对象(i).激活
ActiveChart.ChartArea.Copy
快速选择
活动表。粘贴
sht.范围(“A”&1+i&”)。选择
接下来我
Application.DisplayAlerts=True
如果结束
下一个