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

Тема в разделе "Visual Basic", создана пользователем Magus, 20 июн 2009.

Статус темы:
Закрыта.
  1. Magus

    Magus Гость

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

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

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

    Вложения:

    • copychart.rar
      Размер файла:
      11,1 КБ
      Просмотров:
      10
  2. Tanya

    Tanya Гость

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

    Код (Text):
    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
     
  3. Magus

    Magus Гость

    Спасибо за помощь
     
  4. daxtapous

    daxtapous New Member

    Регистрация:
    10 дек 2013
    Сообщения:
    2
    Симпатии:
    0
    Столкнулся с похожей задачей с некоторым отличием. Как скопировать диаграммы только с одного листа (Activesheet) на новый лист? Т.е. я создаю диаграмму -> копирую ее на новый лист -> пересоздаю новую диаграмму и копирую на тот же лист
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей