上下文
我有一个带有多个嵌入式Excel表的Word。这些Excel表的宽度不同。我尝试使用VBA代码调整Excel电子表格的宽度,以便针对我的Word文档的页面宽度进行优化。
Excel已通过“插入”>“对象”>“ Microsoft Excel工作表”进行嵌入
问题
.ScaleWidth
和.ScaleHeight
对Word中表的大小没有影响。.Width
和.Height
更改高度和宽度,表格将恢复为原始大小代码示例1
For Each oShape In ActiveDocument.InlineShapes
If oShape.Type = wdInlineShapeEmbeddedOLEObject Then
If Left(oShape.OLEFormat.ProgID, 5) = "Excel" Then
oShape.OLEFormat.Activate
oShape.OLEFormat.Object.Application.Worksheets(1).Activate
oShape.ScaleWidth = x ' something calculated
oShape.ScaleHeight = y ' something calculated
End If
End If
Next oShape
答案 0 :(得分:1)
从您的帖子中还不清楚工作表是嵌入式的(也许带有外部引用,您可能会使用代码对其进行更新)还是作为链接的对象。您的“我使用内联形状而不是链接的Excel”并不能使这一点变得更加清晰。要调整大小,请尝试:
Sub Demo()
Application.ScreenUpdating = False
Dim Sctn As Section, iShp As InlineShape, sWdth As Single, sHght As Single
For Each Sctn In ActiveDocument.Sections
With Sctn
With .PageSetup
sWdth = .PageWidth - .LeftMargin - .RightMargin - .Gutter
sHght = .PageHeight - .TopMargin - .BottomMargin
End With
For Each iShp In .Range.InlineShapes
With iShp
.LockAspectRatio = True
If .Width > sWdth Then .Width = sWdth
If .Height > sHght Then .Height = sHght
End With
Next
End With
Next
Application.ScreenUpdating = True
End Sub
上面的宏将缩小和放大行内形状以适合打印区域。
对于您的“在某些表中,Excel的最后一列在Word中不可见”的问题,解决方案实际上取决于工作表是嵌入式的还是链接的。