Как удалить границу изображения при экспорте из Excel? - PullRequest
1 голос
/ 12 апреля 2019

Это мой код экспорта изображения из Excel в файл

For Each oShape In ActiveSheet.Shapes
    strImageName = oShape.TopLeftCell.Row & "_" & oShape.TopLeftCell.Column
    If oShape.Type = msoPicture Then
        oShape.Select
        'Picture format initialization
        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
        '/Picture format initialization
        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 ("D:\images\" & strImageName & ".jpg")
        End With
        oDia.Delete 'oChartArea.Delete
    End If
Next

Исходное изображение не существует границы, но в файле результатов существует размер рамки за пределами изображения:

enter image description here

Как сохранить исходное изображение при экспорте из Excel?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Граница находится на Диаграмме , в которую вы помещаете изображение для экспорта, а не на само Изображение.Итак:

    Set oChartArea = oDia.Chart
    'No need to Activate the ChartObject
    With oChartArea
        .ChartArea.Format.Line.Visible = msoFalse 'No Outline
        .ChartArea.Format.Fill.Visible = msoFalse 'No Background
        .ChartArea.Paste 'No need to use Select
        .Export ("D:\images\" & strImageName & ".jpg")
    End With
    oDia.Delete

Вы можете увидеть это более четко, просто запустив ActiveSheet.ChartObjects.Add 0, 0, 100, 100 в Immediate Window ( Ctrl + G в VBE) и наблюдая занастройки по умолчанию для ChartObject, включая контур.

1 голос
/ 12 апреля 2019

Это поможет? (Непроверенные)

'Your code....
oDia.Activate
Activesheet.Shapes(oDia.name).Line.Visible = msoFalse
With oChartArea
'Rest of code....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...