【问题标题】:VBA - Add, Position and Resize a picture as chart backgroundVBA - 添加、定位和调整图片作为图表背景
【发布时间】:2021-03-24 23:04:16
【问题描述】:

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

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. 玩转“拉伸选项”

尽管如此,录制宏只给了我这个:

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

我无法适应它。

【问题讨论】:

  • 对不起,我可能对实际编写这个帮助不大,但是您是否尝试过简单地记录您执行该过程的宏,然后对其进行修改以满足您的需求?
  • 您好 hobenkr,我已经编辑了我的问题以反映您的反馈。谢谢!
  • 嗯 excel 似乎认为它比我预期的要简单得多。您是否尝试过撤消更改然后运行该宏以恢复更改?这样你至少可以验证宏确实做了它想要做的事情。如果是这样,这可能表明您尝试执行的操作可能与很多默认值匹配。
  • 不幸的是,这些不是默认值。每次鼠标点击我都有 1 个“代码块”实例。
  • 好的,这更有意义。您可能是对的,因为生成的东西不是很有用,但这有点超出了我从头开始的 vba 技能。如果您想在某个地方发布完整的宏,我很乐意尝试与您一起偶然发现它,看看我们是否无法提取有用的部分。

标签: image vba excel charts


【解决方案1】:

这看起来有问题,我很同情你。你不是第一个遇到这种情况的。在这篇可以追溯到 2012 年的帖子中存在同样的问题,给出的代码会进行一些偏移,但不会退出平铺模式。

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

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

快速谷歌和Gimp,命令行程序可能有用。 https://www.gimp.org/tutorials/Basic_Batch/

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多