vba:右对齐图表的刻度标签(堆积条 100%)
vba: right align ticklabels of a graph (stacked bar 100%)
我遇到以下问题:
我正在尝试使用 Excel.
中的数据在 PowerPoint 中创建图表
一切正常,我打开 PowerPoint,创建图表
Set myChart = ppSlide.Shapes.AddChart2(297, xlBarStacked100).Chart
然后我将数据从 Excel 复制到图表(包括项目的文本),最后我想格式化图表(大小、位置、颜色...)。同样一切正常,唯一不起作用的是刻度标签的对齐。它们会自动右对齐,但如果它们太长并且需要 2 行,它们就会居中。但我希望它们右对齐。
我知道如何更改刻度标签(f.e。使其变为粗体:
myChart.Axes(xlCategory).TickLabels.Font.Bold = msoTrue
但我不知道如何右对齐。我不能使用宏记录器,因为我在Excel中找不到这个功能,只有在ppt中
有人知道我该怎么做吗?
提前致谢,抱歉我的英语不好...
您可以这样设置对齐方式:
myChart.Axes(xlCategory).TickLabels.Alignment = xlRight
或 xlLeft 或 xlCenter
TickLabels 的方向 属性(XlTickLabelOrientation 枚举中的可能值)和 Axis 的 TickLabelPosition 属性(XlTickLabelPosition 枚举中的可能值)您可能也感兴趣。
更新 1
我看了图片,但仍然无法编写宏来实现此目的。关于您的评论:不,并不总是可以用 VBA 做一些可以通过用户界面完成的事情,例如粘贴没有相同的选项。
我只能提出两个方案:
- 在某处存储具有良好设置的图表(例如在 Excel 中
Personal.xls),当你需要一个新图表时,不要创建它,而是复制
这个实例并粘贴它 (ActivePresentation.Slides(1).ShapeRange.Paste)
- 将文件另存为 xlsx 并对其进行操作(解压缩并修改 XML)- 这并不容易。
更新 2
是的,图表模板是个好主意。我试过了,效果很好:
myChart.ApplyChartTemplate "...\AppData\Roaming\Microsoft\Templates\Charts\TemplateName.crtx"
此外,您可以尝试使用不同的参数调用 PasteSpecial。
what happens if i use "myChart.Axes(xlCategory).Ticklabels.Alignment = xlRight":
图片1(Tab "home", section 'Paragraph'),点击右下角的符号:
https://i.stack.imgur.com/tLNhD.jpg
图2:选择右对齐而不是'centered'
我遇到以下问题: 我正在尝试使用 Excel.
中的数据在 PowerPoint 中创建图表一切正常,我打开 PowerPoint,创建图表
Set myChart = ppSlide.Shapes.AddChart2(297, xlBarStacked100).Chart
然后我将数据从 Excel 复制到图表(包括项目的文本),最后我想格式化图表(大小、位置、颜色...)。同样一切正常,唯一不起作用的是刻度标签的对齐。它们会自动右对齐,但如果它们太长并且需要 2 行,它们就会居中。但我希望它们右对齐。 我知道如何更改刻度标签(f.e。使其变为粗体:
myChart.Axes(xlCategory).TickLabels.Font.Bold = msoTrue
但我不知道如何右对齐。我不能使用宏记录器,因为我在Excel中找不到这个功能,只有在ppt中
有人知道我该怎么做吗?
提前致谢,抱歉我的英语不好...
您可以这样设置对齐方式:
myChart.Axes(xlCategory).TickLabels.Alignment = xlRight
或 xlLeft 或 xlCenter
TickLabels 的方向 属性(XlTickLabelOrientation 枚举中的可能值)和 Axis 的 TickLabelPosition 属性(XlTickLabelPosition 枚举中的可能值)您可能也感兴趣。
更新 1
我看了图片,但仍然无法编写宏来实现此目的。关于您的评论:不,并不总是可以用 VBA 做一些可以通过用户界面完成的事情,例如粘贴没有相同的选项。
我只能提出两个方案:
- 在某处存储具有良好设置的图表(例如在 Excel 中 Personal.xls),当你需要一个新图表时,不要创建它,而是复制 这个实例并粘贴它 (ActivePresentation.Slides(1).ShapeRange.Paste)
- 将文件另存为 xlsx 并对其进行操作(解压缩并修改 XML)- 这并不容易。
更新 2
是的,图表模板是个好主意。我试过了,效果很好:
myChart.ApplyChartTemplate "...\AppData\Roaming\Microsoft\Templates\Charts\TemplateName.crtx"
此外,您可以尝试使用不同的参数调用 PasteSpecial。
what happens if i use "myChart.Axes(xlCategory).Ticklabels.Alignment = xlRight":
图片1(Tab "home", section 'Paragraph'),点击右下角的符号:
https://i.stack.imgur.com/tLNhD.jpg
图2:选择右对齐而不是'centered'