inohodec
Дата: Пятница, 04.12.2015, 11:12 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 41
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Всем доброе утро! Незнаю даже к какому разделу ближе мой вопрос к VBA или Exce (Графики и диаграммы)l. Если надо перенести тему в другой раздел. Суть проблемы такова: Есть макросс который копирует диограммы на 1 листе и вставляет рисунок диаграммы в нужный мне лист, диаграмм 42 штуки. [vba]Код
Sheets(1).Select ActiveSheet.ChartObjects("2").Copy Sheets(3).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select Sheets(1).Select ActiveSheet.ChartObjects("3").Copy Sheets(5).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select Sheets(1).Select ActiveSheet.ChartObjects("4").Copy Sheets(7).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select
[/vba] Но как только я закрываю данный документ и открываю его, то макросс не работает пишет, что не находит некоторые диаграммы. Лечу этот глюк тем, что проклациваю диаграммы, захожу в макет и в имени диаграммы указваю, что 1 диаграмма это 1, 2 это 2 ...... и так до 42. [vba]Код
ActiveSheet.ChartObjects("6").Activate ActiveChart.Axes(xlCategory).MajorGridlines.Select ActiveSheet.ChartObjects("11").Activate ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ChartObjects("25").Activate ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ChartObjects("21").Activate
[/vba] После данных манипуляций вставка работает, но некоторые рисунки диаграмм, каким то волшебным образом, вставляются не на те листы. Номера листов в которые вставляются не те рисунки постоянно изменяются, но есть и рисунок номер 1 который стабильно ставится на лист 67 как надо. Что это может быть за глюк и как с этим боротся? Файл очень хотел подкрепить но он весит 7 метров.
Всем доброе утро! Незнаю даже к какому разделу ближе мой вопрос к VBA или Exce (Графики и диаграммы)l. Если надо перенести тему в другой раздел. Суть проблемы такова: Есть макросс который копирует диограммы на 1 листе и вставляет рисунок диаграммы в нужный мне лист, диаграмм 42 штуки. [vba]Код
Sheets(1).Select ActiveSheet.ChartObjects("2").Copy Sheets(3).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select Sheets(1).Select ActiveSheet.ChartObjects("3").Copy Sheets(5).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select Sheets(1).Select ActiveSheet.ChartObjects("4").Copy Sheets(7).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select
[/vba] Но как только я закрываю данный документ и открываю его, то макросс не работает пишет, что не находит некоторые диаграммы. Лечу этот глюк тем, что проклациваю диаграммы, захожу в макет и в имени диаграммы указваю, что 1 диаграмма это 1, 2 это 2 ...... и так до 42. [vba]Код
ActiveSheet.ChartObjects("6").Activate ActiveChart.Axes(xlCategory).MajorGridlines.Select ActiveSheet.ChartObjects("11").Activate ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ChartObjects("25").Activate ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ChartObjects("21").Activate
[/vba] После данных манипуляций вставка работает, но некоторые рисунки диаграмм, каким то волшебным образом, вставляются не на те листы. Номера листов в которые вставляются не те рисунки постоянно изменяются, но есть и рисунок номер 1 который стабильно ставится на лист 67 как надо. Что это может быть за глюк и как с этим боротся? Файл очень хотел подкрепить но он весит 7 метров. inohodec
Ответить
Сообщение Всем доброе утро! Незнаю даже к какому разделу ближе мой вопрос к VBA или Exce (Графики и диаграммы)l. Если надо перенести тему в другой раздел. Суть проблемы такова: Есть макросс который копирует диограммы на 1 листе и вставляет рисунок диаграммы в нужный мне лист, диаграмм 42 штуки. [vba]Код
Sheets(1).Select ActiveSheet.ChartObjects("2").Copy Sheets(3).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select Sheets(1).Select ActiveSheet.ChartObjects("3").Copy Sheets(5).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select Sheets(1).Select ActiveSheet.ChartObjects("4").Copy Sheets(7).Select Range("A7").Select ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 436.5354330709 Selection.ShapeRange.Width = 714.3307086614 Range("A6").Select
[/vba] Но как только я закрываю данный документ и открываю его, то макросс не работает пишет, что не находит некоторые диаграммы. Лечу этот глюк тем, что проклациваю диаграммы, захожу в макет и в имени диаграммы указваю, что 1 диаграмма это 1, 2 это 2 ...... и так до 42. [vba]Код
ActiveSheet.ChartObjects("6").Activate ActiveChart.Axes(xlCategory).MajorGridlines.Select ActiveSheet.ChartObjects("11").Activate ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ChartObjects("25").Activate ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveSheet.ChartObjects("21").Activate
[/vba] После данных манипуляций вставка работает, но некоторые рисунки диаграмм, каким то волшебным образом, вставляются не на те листы. Номера листов в которые вставляются не те рисунки постоянно изменяются, но есть и рисунок номер 1 который стабильно ставится на лист 67 как надо. Что это может быть за глюк и как с этим боротся? Файл очень хотел подкрепить но он весит 7 метров. Автор - inohodec Дата добавления - 04.12.2015 в 11:12
Roman777
Дата: Пятница, 04.12.2015, 11:25 |
Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация:
127
±
Замечаний:
0% ±
Excel 2007, Excel 2013
inohodec , удалить из файла всё кроме 1-2 диаграмм ваших...)
inohodec , удалить из файла всё кроме 1-2 диаграмм ваших...)Roman777
Много чего не знаю!!!!
Ответить
Сообщение inohodec , удалить из файла всё кроме 1-2 диаграмм ваших...)Автор - Roman777 Дата добавления - 04.12.2015 в 11:25
Эх_Прорвёмся
Дата: Пятница, 04.12.2015, 11:27 |
Сообщение № 3
Группа: Заблокированные
Ранг: Участник
Сообщений: 72
Репутация:
-21
±
Замечаний:
100% ±
Excel 2003
Файл очень хотел подкрепить но он весит 7 метров.
Сделайте коротенький файл-пример с двумя диаграммами и несколькими листами.
Файл очень хотел подкрепить но он весит 7 метров.
Сделайте коротенький файл-пример с двумя диаграммами и несколькими листами.Эх_Прорвёмся
Объяснять как бабушке на скамеечке у подъезда.
Ответить
Сообщение Файл очень хотел подкрепить но он весит 7 метров.
Сделайте коротенький файл-пример с двумя диаграммами и несколькими листами.Автор - Эх_Прорвёмся Дата добавления - 04.12.2015 в 11:27
inohodec
Дата: Пятница, 04.12.2015, 11:58 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 41
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Сделал короткую версию
К сообщению приложен файл:
_42_1.xls
(99.5 Kb)
Ответить
Сообщение Сделал короткую версию Автор - inohodec Дата добавления - 04.12.2015 в 11:58
SLAVICK
Дата: Пятница, 04.12.2015, 12:01 |
Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
Если есть четкая логика копирования - можно сделать обычный цикл типа: [vba]Код
For each d in ActiveSheet.ChartObjects сюда код что делать Next
[/vba] И код Ваш сразу уменьшится раз в 40
Если есть четкая логика копирования - можно сделать обычный цикл типа: [vba]Код
For each d in ActiveSheet.ChartObjects сюда код что делать Next
[/vba] И код Ваш сразу уменьшится раз в 40 SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Пятница, 04.12.2015, 12:01
Ответить
Сообщение Если есть четкая логика копирования - можно сделать обычный цикл типа: [vba]Код
For each d in ActiveSheet.ChartObjects сюда код что делать Next
[/vba] И код Ваш сразу уменьшится раз в 40 Автор - SLAVICK Дата добавления - 04.12.2015 в 12:01
inohodec
Дата: Пятница, 04.12.2015, 12:22 |
Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 41
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Спасибо за совет, я и сам хотел так сделать, но для этого сначала хочу файл немного поменять (его структуру с таблицами и диаграммами), чтоб все стояли по порядку. Я только учусь программированию. Поэтому и макроссы такие большие
Спасибо за совет, я и сам хотел так сделать, но для этого сначала хочу файл немного поменять (его структуру с таблицами и диаграммами), чтоб все стояли по порядку. Я только учусь программированию. Поэтому и макроссы такие большие inohodec
Ответить
Сообщение Спасибо за совет, я и сам хотел так сделать, но для этого сначала хочу файл немного поменять (его структуру с таблицами и диаграммами), чтоб все стояли по порядку. Я только учусь программированию. Поэтому и макроссы такие большие Автор - inohodec Дата добавления - 04.12.2015 в 12:22
Эх_Прорвёмся
Дата: Пятница, 04.12.2015, 12:52 |
Сообщение № 7
Группа: Заблокированные
Ранг: Участник
Сообщений: 72
Репутация:
-21
±
Замечаний:
100% ±
Excel 2003
inohodec, Ну так а Ваш вопрос решился?
Объяснять как бабушке на скамеечке у подъезда.
Ответить
Сообщение inohodec, Ну так а Ваш вопрос решился? Автор - Эх_Прорвёмся Дата добавления - 04.12.2015 в 12:52
SLAVICK
Дата: Пятница, 04.12.2015, 12:57 |
Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
Вот попробуйте так: [vba]Код
Sub вставить_диограммы() Dim d As ChartObject, p As Shape, c As Range Sheets(1).Select For Each d In Sheets(1).ChartObjects n = d.Name n = n & "_01.01.2016" d.Copy With Sheets(n) Set c = .[a7] .Activate .PasteSpecial Format:="Метафайл Windows (EMF)", Link:=False, DisplayAsIcon:=False Set p = .Shapes(1) p.Left = c.Left: p.Top = c.Top: p.Name = d.Name p.LockAspectRatio = False p.Height = 436.5354330709 p.Width = 714.3307086614 End With Next End Sub
[/vba]
Вот попробуйте так: [vba]Код
Sub вставить_диограммы() Dim d As ChartObject, p As Shape, c As Range Sheets(1).Select For Each d In Sheets(1).ChartObjects n = d.Name n = n & "_01.01.2016" d.Copy With Sheets(n) Set c = .[a7] .Activate .PasteSpecial Format:="Метафайл Windows (EMF)", Link:=False, DisplayAsIcon:=False Set p = .Shapes(1) p.Left = c.Left: p.Top = c.Top: p.Name = d.Name p.LockAspectRatio = False p.Height = 436.5354330709 p.Width = 714.3307086614 End With Next End Sub
[/vba] SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение Вот попробуйте так: [vba]Код
Sub вставить_диограммы() Dim d As ChartObject, p As Shape, c As Range Sheets(1).Select For Each d In Sheets(1).ChartObjects n = d.Name n = n & "_01.01.2016" d.Copy With Sheets(n) Set c = .[a7] .Activate .PasteSpecial Format:="Метафайл Windows (EMF)", Link:=False, DisplayAsIcon:=False Set p = .Shapes(1) p.Left = c.Left: p.Top = c.Top: p.Name = d.Name p.LockAspectRatio = False p.Height = 436.5354330709 p.Width = 714.3307086614 End With Next End Sub
[/vba] Автор - SLAVICK Дата добавления - 04.12.2015 в 12:57