2011-10-25 30 views
0

我目前正在通过宏将许多图表从excel复制到word。我用了录制宏功能,这使我产生了下面的代码:将图表从excel复制到word - 不确定行为

Set charts = Sheets("Charts").ChartObjects 
For Each chart In charts 
    WordApplication.Selection.TypeParagraph 
    WordApplication.ActiveDocument.Tables.Add Range:=WordApplication.Selection.Range, NumRows:=2, NumColumns:= _ 
     1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _ 
     wdAutoFitFixed 
    With WordApplication.Selection.Tables(1) 
     If .Style <> "Table Grid" Then 
      .Style = "Table Grid" 
     End If 
     .ApplyStyleHeadingRows = True 
     .ApplyStyleLastRow = False 
     .ApplyStyleFirstColumn = True 
     .ApplyStyleLastColumn = False 
     .ApplyStyleRowBands = True 
     .ApplyStyleColumnBands = False 
    End With 
    WordApplication.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 
    chart.Copy 
    WordApplication.Selection.Paste 


    WordApplication.Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend 
    ' configure the shape (resizing) 
    WordApplication.Selection.MoveDown Unit:=wdLine, Count:=2 
Next 

所以我要做的就是,把一个返回,添加表2行第一行对准中心。然后通过从Excel中复制并将其粘贴到Word中来添加图表。通过选择(通过MoveLeft命令)做一些修改形状(删除),最后,向下移动2个步骤(离开表格)并对所有图表重做。

如果我用F8来解决这个问题,我会得到我想要的结果。但是,如果我只是让它运行,我看到不同的结果,所有的时间,例如:

  • 选择连MoveDown命令
  • 形状为MoveDown命令后,仍然选择后停留在表
  • 运行时错误'4605':此方法或属性不可用,因为对象引用表格行的末尾(由于选择未被移动并且Tables.Add在上一个表格内完成)
  • 正确结果

我的问题:
我该如何让它工作而不必手动通过宏?

使用Windows XP,Excel 2007(12.0.65.62.5003)。请注意,该问题在Windows 7上表现不一样(未在Windows Vista上测试过)。

回答

1

看来最后一行并不总是离开我插入的表。我取代了以下行:

WordApplication.Selection.MoveDown Unit:=wdLine, Count:=2 

与此

Do Until Not WordApplication.Selection.Information(wdWithInTable) 
    WordApplication.Selection.MoveRight Unit:=wdCharacter, Count:=1 
Loop 

而现在它的作品,因为它应该

+0

好!所以你完成了它 – niko

+0

是的,好消息:D将标记为2天内接受 – Default

相关问题