Копирование диаграмм Excel на новый созданный лист

  • Автор темы Автор темы Magus
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
M

Magus

Подскажите, пожалуйста

Есть файл Excel, состоящий из нескольких листов на каждом из котороых по несколько диаграмм(см. вложение)

Цель программы- создать новый лист и скопировать туда все диаграммы, находящиеся на всех листах
Программа приводится в учебнике Питер Эйткен "Интенсивный курс программирования в Excel за выходные", но в книге где-то неточность
и в результате создается пустой лист, на который ничего не копируется, поэтому практически ее применить невозможно
(в частности, объявленная переменная YPos нигде в программе не используется)
 

Вложения

Не всегда срабатывает цикл For co Each ... Next co
Поэтому нужно использовать For i=1 to ... Next i

Код:
Public Sub CopyEmbeddedChartsToNewSheet(name As String, ChWidth As Integer, ChHeight As Integer)

Const Space_Between_Charts = 20

Dim newWS As Worksheet
Dim oldWS As Worksheet
Dim i As Integer

Application.ScreenUpdating = False

Set newWS = Worksheets.Add
newWS.name = name

For Each oldWS In Worksheets

If oldWS.name <> name Then

For i = 1 To oldWS.ChartObjects.count
oldWS.ChartObjects(i).Copy
newWS.Paste
Next i
End If

Next oldWS

For i = 1 To newWS.ChartObjects.count

With newWS.ChartObjects(i)

.width = ChWidth
.Height = ChHeight
.Left = 30
.Top = (i - 1) * (ChHeight + Space_Between_Charts)
End With

Next i

Application.ScreenUpdating = True

End Sub

По ходу Питер Эйткен так же интенсивно писал свою книгу, как и назвал )))
этим можно объяснить некотрые лишние движения, в том числе и лишняя переменная YPos
 
Столкнулся с похожей задачей с некоторым отличием. Как скопировать диаграммы только с одного листа (Activesheet) на новый лист? Т.е. я создаю диаграмму -> копирую ее на новый лист -> пересоздаю новую диаграмму и копирую на тот же лист
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!