none
VBA Excel 2016, экспорт картинок из колонтитулов RRS feed

Все ответы

  • Здравствуйте,

    Возможно вам подойдет Объект Shapes (Excel)

    Посмотрите пример кода здесь Export pictures from excel file into jpg using VBA:

    For Each oShape In ActiveSheet.Shapes
        strImageName = ActiveSheet.Cells(oShape.TopLeftCell.Row, 1).Value
        oShape.Select
        
        Selection.ShapeRange.PictureFormat.Contrast = 0.5: Selection.ShapeRange.PictureFormat.Brightness = 0.5: Selection.ShapeRange.PictureFormat.ColorType = msoPictureAutomatic: Selection.ShapeRange.PictureFormat.TransparentBackground = msoFalse: Selection.ShapeRange.Fill.Visible = msoFalse: Selection.ShapeRange.Line.Visible = msoFalse: Selection.ShapeRange.Rotation = 0#: Selection.ShapeRange.PictureFormat.CropLeft = 0#: Selection.ShapeRange.PictureFormat.CropRight = 0#: Selection.ShapeRange.PictureFormat.CropTop = 0#: Selection.ShapeRange.PictureFormat.CropBottom = 0#: Selection.ShapeRange.ScaleHeight 1#, msoTrue, msoScaleFromTopLeft: Selection.ShapeRange.ScaleWidth 1#, msoTrue, msoScaleFromTopLeft
        
        Application.Selection.CopyPicture
        Set oDia = ActiveSheet.ChartObjects.Add(0, 0, oShape.Width, oShape.Height)
        Set oChartArea = oDia.Chart
        oDia.Activate
        With oChartArea
            .ChartArea.Select
            .Paste
            .Export ("c:\...\" & strImageName & ".jpg")
        End With
        oDia.Delete 'oChartArea.Delete
    Next
    



    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    29 сентября 2020 г. 10:37
    Модератор
  • Копирование через Chart работает только с объектами на основной части листа, но вот рисунки в колонтитулах в качестве Shape не видно.
    29 сентября 2020 г. 12:51
  • Видимо с колонтитулами сложнее, посмотрите такое решение, здесь сохраняют как архив и затем от туда достают рисунки:

    Save picture used in Excel header to hard drive


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.


    29 сентября 2020 г. 13:40
    Модератор
  • Видимо с колонтитулами сложнее, посмотрите такое решение, здесь сохраняют как архив и затем от туда достают рисунки:

    Save picture used in Excel header to hard drive

    Смысл кода по ссылке - извлечение из zip(xlsx)-файла из папки xl\media графических файлов image1.png, image2.png, image3.png и т.д. и всё.

    Но затем придётся искать соответствия этим файлам рисункам из колонтитулов (их может быть 6 max) в соответствие с .PageSetup.LeftHeaderPicture.Filename, .PageSetup.CenterHeaderPicture.Filename ... .PageSetup.RightFooterPicture.Filename в xml-файлах vmlDrawing1.vml (\xl\drawings) и vmlDrawing1.vml.rels (\xl\drawings\_rels).

    Но это не самое страшное. А как быть именно с активным листом? - я изменяю картинки в колонтитулах и мне для запуска макроса нужно обязательно записать книгу на диск, чтобы работать с zip(xlsx)-файлом.

    29 сентября 2020 г. 16:16