如何将word文档中的所有表格转为图片?

How can I convert all tables in a word document to images?

下面是我的尝试,但它产生了奇怪的结果,而且每次我 运行 宏时结果似乎都会改变...

任何人都可以看到我的代码中的任何问题或者可以想出更好的方法吗?

Sub ConvertTablesToImages()

Dim tbl As Table
Dim currentDoc As Document
Set currentDoc = ActiveDocument

For Each tbl In currentDoc.Tables

   tbl.Range.Copy
   Selection.Collapse Direction:=wdCollapseStart
   Selection.PasteSpecial DataType:=wdPasteEnhancedMetafile
   tbl.Delete

Next

End Sub

你遇到了一些问题。一种是混合范围和选择,另一种是删除集合的成员(在本例中为文档中的表),同时尝试遍历所有成员。

查看您的代码修订版。它应该会更好用。

Sub ConvertTablesToImages()

    Dim tbl As Table, rng As Range, i As Integer
    Dim currentDoc As Document
    Set currentDoc = ActiveDocument
    
    For i = currentDoc.Tables.Count To 1 Step -1
        Set tbl = currentDoc.Tables(i)
        Set rng = tbl.Range
        rng.Collapse Direction:=wdCollapseStart
        tbl.Range.CopyAsPicture
        tbl.Delete
        rng.PasteSpecial DataType:=wdPasteEnhancedMetafile
        rng.ShapeRange(1).ConvertToInlineShape
    Next

End Sub

只是为 Rich 的答案添加一个变体,以供发现他们的表格在某些粘贴的图像中被裁剪的任何人。

添加 tbl.PreferredWidth = 0 似乎解决了这个问题

Sub ConvertTablesToImages()

    Dim tbl As Table, rng As Range, i As Integer
    Dim currentDoc As Document
    Set currentDoc = ActiveDocument

    For i = currentDoc.Tables.Count To 1 Step -1
        Set tbl = currentDoc.Tables(i)
        Set rng = tbl.Range
        tbl.PreferredWidth = 0
        rng.Collapse Direction:=wdCollapseStart
        tbl.Range.CopyAsPicture
        tbl.Delete
        rng.PasteSpecial DataType:=wdPasteEnhancedMetafile
        rng.ShapeRange(1).ConvertToInlineShape
    Next

End Sub