将图表从 Excel 复制和删除到 Word

问题描述 投票:0回答:1

我的最终目标是能够从 Excel 工作表(总共 16 个)复制图表,并将它们粘贴到 Word 文档中的已知书签处,与文本内联。我不希望 Word 文件链接到电子表格,原因我不会在这里讨论。然后,我需要能够稍后删除这些相同的图表,然后再将新的一组图表复制到文档中。

Word中的InLineShapes似乎没有“Name”属性,只有一个索引,我认为它必须是Long类型,而不是整数类型。当我单击已复制的图表并使用 Word 功能区上的“编辑”>“选择”按钮时,它确实会显示每个图表的名称,如图 1 等。

我目前在 Excel 工作簿中使用以下代码将图表复制并粘贴到 Word 中,这似乎工作正常。

This code will use Bookmarks to place the charts and copy them from this Workbook

        For i = 1 To 16

            Sheets(sheetnames(i)).Select
            ActiveSheet.ChartObjects(Chartlocn(i)).Activate
            ActiveChart.ChartArea.Copy
            

            With d.Bookmarks(Bookmarklocn(i)).Range
        
                .Select
                objW.Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
                DisplayAsIcon:=False
               
       
            End With
    
        Next i

我尝试使用以下代码来删除图表:

 j = d.InlineShapes.Count
                
        counter = 0
        For i = 1 To d.InlineShapes.Count
    
            counter = counter + 1
            MsgBox (i)
            
                
            'If d.InlineShapes.Item(counter).Type = _
                'wdInlineShapePicture Then
                d.InlineShapes.Item(counter).Select
                objW.Selection.Delete Unit:=wdCharacter, Count:=1 ' Came from Macro Recording
                
           ' Else
            'End If
            
        Next i

上面注释掉的部分对我不起作用。

尽管检查了 Word 文件和 Excel 工作簿中我能想象到的所有内容,但每个图表似乎都是相同的 - 所有内联,所有顺序“名称”图片 x,复制和粘贴的方法相同。

但观察到的行为是,有些图表被删除,有些则没有。

是否有一种机制以某种方式识别图表然后删除它们。我知道它们已粘贴在书签位置。我遗漏了一些明显的东西,或者是否有更好的复制和粘贴方法,以便我稍后可以通过某些名称或标识符“获取”它们?

excel vba charts ms-word shapes
1个回答
0
投票

如果您只想使用

For
循环删除活动 Word 文档中的所有图表,您可能需要从最高索引开始循环

For i = d.InlineShapes.Count to 1 Step -1

但是使用

For Each
循环会更简单、更好:

例如:

Dim WordApp As Word.Application
Set WordApp = GetObject(, "Word.Application")

Dim chrt As Word.InlineShape
For Each chrt In WordApp.ActiveDocument.InlineShapes
    chrt.Delete
Next
© www.soinside.com 2019 - 2024. All rights reserved.