【问题标题】:Import picture and scale in Word using VBA使用 VBA 在 Word 中导入图片和缩放
【发布时间】:2016-03-11 22:51:04
【问题描述】:

我喜欢使用 VBA 将图片导入 Word。图片需要导入书签,然后进行缩放。

我已尝试使用以下代码,但代码存在一些问题。图片未导入书签,我无法缩放图片。有什么建议我做错了吗?

Sub ImportReport()

ActiveDocument.GoTo What:=wdGoToBookmark, Name:="bm1"


Selection.InlineShapes.AddPicture FileName:= _
    "File_path_to_the_PNG_file", _
    LinkToFile:=False, _
    SaveWithDocument:=True
    ', _
    'ScaleWidth:=100, _
    'ScaleHeight:=100

    InlineShapes.Item(1).ScaleHeight = 100
    Shapes.Item(1).ScaleWidth = 100

End Sub

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    这就是我最后所做的。我有 18 张图片要导入。我已经在 word 文件中创建了书签。

    Sub ImportScaleWrap()
    
    Dim ImagePath As String
    Dim FileName As String
    Dim i As Integer
    
    ImagePath = "IMAGE_PATH"
    FileName = "GENERIC_PART_OF_FILE_NAME"
    
    Dim RiskPic As InlineShape
    
    For i = 1 To 18
        Set RiskPic = ActiveDocument.Bookmarks("bm" & i).Range.InlineShapes.AddPicture(FileName:=ImagePath & FileName & i & ".png", LinkToFile:=False, SaveWithDocument:=True)
    
        RiskPic.ScaleHeight = 100
        RiskPic.ScaleWidth = 100
    
        Dim RiskPicType As Shape
        Set RiskPicType = RiskPic.ConvertToShape
        RiskPicType.WrapFormat.Type = wdTopBottom
    
    Next i
    
    End Sub
    

    【讨论】:

    • 嗯。转换为形状后,图片将不再“在”书签中。可以吗?
    • 有没有更好的方法让它仍然在书签中?如果以后想使用一些代码将其删除,我想将它放在书签中会更容易。
    • 为什么要把它变成Shape?我在您的代码中唯一能看到的是 WrapFormat。相同类型的“环绕”可以通过将图片放置在其自己的段落中来实现,该段落采用居中对齐格式。在“模板”文档中,将书签放在“空白”段落中并应用居中对齐。为了以后删除它:BookmarkRange.Paragraphs(1).Range.InlineShapes(1).Delete
    • 我希望图片覆盖整个页面。图片是PDF文件中页面的PNG文件。使用中心对齐,我仍然在左侧和上方有边距,并且图片在底部和右侧溢出。有没有办法做到这一点,并且仍然将图像保存在书签中?
    • 一种可能性是创建一个具有所需大小和位置的文本框(文本框的绘图类型)。将书签放在文本框中。当您在书签处插入 InlineShape 时,您应该能够保留该书签。请注意,您应该将文本框的“填充”(边距)设置为零,否则图片将没有预期的尺寸。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2011-01-02
    • 1970-01-01
    • 2020-01-02
    相关资源
    最近更新 更多