我正在写一个文档,其中必须包含许多图片。在不断进行的过程中,图片得到了多次更改。
我的想法是将Rectangle Shapes用作占位符,并为其指定一个合适的名称。我创建了一个宏,用于选择“形状”,删除旧图片并将新图片插入“形状”。
type SomeBuilder<'e> (e: 'e) =
member this.Bind(x, fn) = ...
member this.Return x = ...
member this.ReturnFrom x = ...
[<CustomOperation("e")>]
member this.E () = e
对于浮动形状和InlineShapes,我都希望这样做。
当我将占位符形状设置为InlineShapes时,TypeBackspace行将删除InlineShape,并且图片不会插入到InlineShape中。
答案 0 :(得分:0)
非常感谢您的帮助。经过许多努力,使用Tables + Bookmarks的解决方案非常有效。 这是代码:
Sub InsertPic(Pic As String, Cut As Single)
Dim strFile As String
Dim strExt As String
Dim ils As InlineShape
strFile = "C:\Pictures“
strExt = ".png"
Application.ScreenUpdating = False
ActiveDocument.Bookmarks(Pic).Select
Selection.Delete
Set ils = Selection.InlineShapes.AddPicture(FileName:= _
strFile & "/" & Pic & strExt, _
LinkToFile:=False, SaveWithDocument:=True)
With ils
.PictureFormat.CropBottom = CentimetersToPoints(Cut)
.LockAspectRatio = msoTrue
.Height = .Range.Cells(1).Height
If .Width > .Range.Cells(1).Width Then
.Width = .Range.Cells(1).Width
End If
End With
ActiveDocument.Bookmarks.Add (Pic)
Application.ScreenUpdating = True
End Sub
Sub Insert01()
InsertPic "Image01", 20
MsgBox "Done"
End Sub
一些解释:
对于此代码,书签和图片需要相同的名称。我这样做是为了避免混淆。
使用Selection.Delete命令,书签也会被删除,因此我只是在末尾添加了一个具有相同名称的新书签。我敢肯定有解决这个问题的更优雅的方法,但是这个解决方案有效。
我经历了很多挣扎,因为我想种植Picure。但是,当插入表格单元时,其大小将更改为表格单元的大小,然后进行切割步骤。因此,Picturs无法满足整个单元格的大小。因此,我添加了一部分以将Image调整为表格单元格大小。同样,我肯定有更好的方法来克服这个问题...
由于调整大小,万客隆需要一些时间(至少对于我的文档而言)。所以我禁用了屏幕更新。