VBA - 添加,定位和调整图片大小作为图表背景

时间:2017-01-30 15:55:31

标签: excel image vba excel-vba charts

我需要在已存在的图表的背景上添加,定位和调整图片大小。

Sub Add_Picture()
Application.ScreenUpdating = False

Dim Input_Data As Worksheet
Set Input_Data = ThisWorkbook.Sheets("Input Data")

'###    Find Chart
Dim chrt As ChartObject
Set chrt = Input_Data.ChartObjects(Input_Data.ChartObjects.Count) ' finding the only chart on the sheet

'###    Add the picture
chrt.Chart.ChartArea.Format.Fill.UserPicture ("C:\Users\z188018\Desktop\Untitled.png") ' adding the picture
chrt.Chart.SetElement (msoElementPlotAreaNone) 'to show the picture (otherwise hidden behing a white background)

'###    Center the picture


'###    Resize the picture


Application.ScreenUpdating = True
End Sub

我已经尝试了多次,但没有什么值得一提的,这就是为什么我把这些部分留空了。我可以在运行这段代码后手动完成,然后:

  1. 右键单击图片
  2. "格式图表区"
  3. "填写"
  4. "图片或纹理填充"
  5. 使用"拉伸选项"
  6. 尽管如此,录制宏只给我这个:

    With ActiveSheet.Shapes("Chart 7").Fill
            .Visible = msoTrue
            .UserPicture "C:\Users\z188018\Desktop\Untitled.png"
            .TextureTile = msoFalse
            .RotateWithObject = msoTrue
        End With
    

    我无法适应它。

1 个答案:

答案 0 :(得分:0)

这看起来很麻烦,你有同情心。你不是第一个遇到这个问题的人。在这篇可以追溯到2012年的帖子中存在同样的问题,给出的代码会做一些抵消,但不会出现在平铺模式中。

https://www.mrexcel.com/forum/excel-questions/640887-visual-basic-applications-change-chart-porperties.html#post_3180924

我从这里可以建议的是,你操纵你的图像来假装它被重新调整和居中。因此,进行一些图像处理以(1)调整图像大小(2)放大图像,在新空间中给出白色空间,然后(3)偏移图像的原始部分。可悲的是,我不知道如何在代码中执行此操作。

快速Google和 @Override public void onBackPressed() { // nothing to code } ,命令行程序可能很有用。 https://www.gimp.org/tutorials/Basic_Batch/

Gimp甚至有一个stackoverflow标记,所以有一个社区可以在这里问 https://stackoverflow.com/questions/tagged/gimp