使用 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
这不是一个 运行 时间错误,而是一个表明你的代码不可能按原样执行的编译错误。
如果将 Select
和 Selection
替换为对象本身,如下所示:
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
对象(变体)而不是强类型对象等
我可以使用以下代码在 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
这不是一个 运行 时间错误,而是一个表明你的代码不可能按原样执行的编译错误。
如果将 Select
和 Selection
替换为对象本身,如下所示:
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
对象(变体)而不是强类型对象等