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

时间:2015-03-30 02:36:22

标签: excel vba excel-vba ms-word word-vba

我可以使用以下代码控制 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 VBA嵌入MS Word文档的图形中的轴

1 个答案:

答案 0 :(得分:0)

我现在看到一些事情,我更仔细地看待这一点。第一个代码段是 Excel 代码,这不会运行,无法在Word中运行,实际上它会引发编译错误。

  

当我尝试在Word VBA中运行它时,我收到错误

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

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

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对象(变体)而不是强类型对象等。