使用 MS Word VBA 增加嵌入在 Word 文档中的图表中的轴的权重

Use MS Word VBA to increase weight of axes in graph embedded in a Word document

我可以使用以下代码在 Excel VBA 中控制图表的权重:

ActiveChart.Axes(xlCategory).Select
With Selection.Border
    .ColorIndex = 57
    .Weight = xlMedium
    .LineStyle = xlContinuous
End With

当我在 Word VBA 中尝试 运行 时,出现错误

编译错误: 未找到方法或数据成员

.Border 突出显示。

我试验了代码

salesChart.Axes(xlCategory).Select
Selection.Borders(wdBorderBottom).Visible = True

并收到消息

运行-时间错误'4605' 此方法或 属性 不可用,因为该对象引用绘图对象。

我想找出一种方法来突出显示我通过 Word 嵌入到 MS Word 文档中的图表中的轴 VBA

现在我更仔细地观察了这一点,我看到了一些东西。第一个片段是 Excel 代码,这不是 运行 也不能 运行 在 Word 中,事实上它引发了一个 编译错误。

When I try running this in Word VBA, I get the error

ActiveChart.Axes(xlCategory).Select
With Selection.Border
    .ColorIndex = 57
    .Weight = xlMedium
    .LineStyle = xlContinuous
End With

编译器突出显示 .Border,因为 Word 中没有 Selection 对象的 Border 属性。

Selection对象有点模糊,because it can be different things。可以把它想象成一个变体,它指的是任何被选中的东西,或者如果没有被选中则指向光标点。

所以这解释了 method or data member not found 这不是一个 运行 时间错误,而是一个表明你的代码不可能按原样执行的编译错误。

如果将 SelectSelection 替换为对象本身,如下所示:

With ActiveChart.Axes(xlCategory).Border
    .ColorIndex = 57
    .Weight = xlMedium
    .LineStyle = xlContinuous
End With

你会得到另一个错误,因为在 Word 中没有 ActiveChart 这样的东西,它只是一个 Excel 对象。 (使用 Option Explicit 会提醒您注意这个问题)。简而言之,您需要引用形状或图表,您可以像之前那样使用形状上的句柄和变量来完成此操作。尝试:

With salesChart.Axes(xlCategory).Border
    .ColorIndex = 57
    .Weight = xlMedium
    .LineStyle = xlContinuous
End With

这可能有用:

How to avoid using Select in Excel VBA macros

虽然是专门为 Excel 编写的,但它是一个更好的编程概念:Select 是做大多数事情的一种相当粗略的方式,尽管有一些例外,但几乎所有你可以用VBA 可以通过直接使用对象来更有效地完成,而不是先 选择 然后再对 选择 进行操作——它是多余的。它也很混乱,因为你需要不断地保持 选择 东西,你的代码必然是模棱两可的,指的是模糊的 Selection 对象(变体)而不是强类型对象等