Суть макроса - копирует 4 графика которые есть в книге, вставляет их в определенные места как картинки и группирует (для удобства дальнейшей копии в презентацию). Проблема в следующем - если что то подкорректировать, картинки удалить и запустить макрос заново - у картинок будут уже другие номера и группировка не сработает. Есть какое то решение чтобы это исправить или нет?
Доп вопрос для самообучения - можно как то в этой формуле обойтись без "select" (ответ необязателен)?
Форумчане, доброго времени суток! Столкнулся со следующей проблемой в макросе: [vba]
Суть макроса - копирует 4 графика которые есть в книге, вставляет их в определенные места как картинки и группирует (для удобства дальнейшей копии в презентацию). Проблема в следующем - если что то подкорректировать, картинки удалить и запустить макрос заново - у картинок будут уже другие номера и группировка не сработает. Есть какое то решение чтобы это исправить или нет?
Доп вопрос для самообучения - можно как то в этой формуле обойтись без "select" (ответ необязателен)?akatorginak
Поскольку файла нет... Картинка вставится с индексом ActiveSheet.Shapes(1). либо ActiveSheet.Shapes(ActiveSheet.Shapes.count) (Array("Picture 1", "Picture 2", "Picture 3", "Picture 4")) собираете либо по индексам, либо по индексам определяете имена, а по ним массив. Без Select вполне можно обойтись.
Поскольку файла нет... Картинка вставится с индексом ActiveSheet.Shapes(1). либо ActiveSheet.Shapes(ActiveSheet.Shapes.count) (Array("Picture 1", "Picture 2", "Picture 3", "Picture 4")) собираете либо по индексам, либо по индексам определяете имена, а по ним массив. Без Select вполне можно обойтись.RAN
Насчет Select я погорячился. В данном случае без него нельзя. [vba]
Код
Sub Мяу() Dim ar(), i& Application.ScreenUpdating = True With ActiveSheet ReDim ar(.ChartObjects.Count - 1) For i = 1 To .ChartObjects.Count .ChartObjects(i).Copy .Cells(21, 2 + 8 * (i - 1)).Select .PasteSpecial Format:="Рисунок (PNG)", Link:=False, DisplayAsIcon:=False ar(i - 1) = .Shapes.Count Next .Shapes.Range(ar).Group End With Application.ScreenUpdating = False End Sub
[/vba]
Насчет Select я погорячился. В данном случае без него нельзя. [vba]
Код
Sub Мяу() Dim ar(), i& Application.ScreenUpdating = True With ActiveSheet ReDim ar(.ChartObjects.Count - 1) For i = 1 To .ChartObjects.Count .ChartObjects(i).Copy .Cells(21, 2 + 8 * (i - 1)).Select .PasteSpecial Format:="Рисунок (PNG)", Link:=False, DisplayAsIcon:=False ar(i - 1) = .Shapes.Count Next .Shapes.Range(ar).Group End With Application.ScreenUpdating = False End Sub