2016-03-23 94 views
1

从excel VBA中,我将一个水平行添加到Word文档的标题中。VBA,EXCEL,WORD:格式化Excel中的水平行文字标题

Dim a As Word.Range 
Set a = oWord.ActiveDocument.Sections(1).headers(wdHeaderFooterPrimary).Range 
a.Collapse Direction:=wdCollapseEnd 
a.InlineShapes.AddHorizontalLineStandard 

接下来,我想格式化该行:

a.InlineShapes(1).Height = 1 

但是,这将引发和错误5941 - 集合的请求的成员不存在。

我也试过

With a.InlineShapes.AddHorizontalLineStandard 
    .Height = 1 
End With 

但没有工作无论是。

我试过Word vba中的代码,它工作。我在这里错过了什么吗?我如何格式化Excel中的行?

编辑

我加入行后停止代码。然后我执行.InlineShapes.Count,它返回0.然后我在文档体中添加一行并再次执行,然后返回1。所以问题似乎是头不能从Excel访问?

回答

1

尝试以下,它使用一个InlineShape对象为“持有”您要添加,让你可以直接解决这个问题就行了。我不明白为什么你有什么不工作,但如果这不起作用,它可能至少会给你一个更丰富的错误信息:

Dim rng As word.Range 
Dim ils As word.InlineShape 

Set rng = oWord.ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range 
rng.Collpase Direction:=wdCollapseEnd 
Set ils = rng.InlineShapes.AddHorizontalLineStandard(rng) 
ils.height = 1 
1

试试这个:

Dim a As Object 
Set a = GetObject(, "Word.Application") 
With a.ActiveDocument.Sections(1).headers(wdHeaderFooterPrimary) 
    .Range.InlineShapes.AddHorizontalLineStandard.Height = 1 
End With