• ppt_VBA 从word文档提取图片到ppt逐页平铺


    'PPT 加载宏 代码模板
    Dim cmdBar As CommandBar, cmdBtn As CommandBarControl
    Const cmdBtnCap As String = "从Word文档导入图片"
    Sub Auto_Open()
        Call DelCmdBtn
        Call AddCmdBtn
    End Sub
    Sub Auto_Close()
        Call DelCmdBtn
    End Sub
    Sub AddCmdBtn()
        Set cmdBar = Application.CommandBars("Tools")
        Set cmdBtn = cmdBar.Controls.Add(msoControlButton)
        With cmdBtn
            .Caption = cmdBtnCap
            .Style = msoButtonCaption
            .OnAction = "pptGetImagesFromWord2"
        End With
        Set cmdBtn = Nothing
        Set cmdBar = Nothing
    End Sub
    Sub DelCmdBtn()
        Set cmdBar = Application.CommandBars("Tools")
        For Each cmdBtn In cmdBar.Controls
            If cmdBtn.Caption = cmdBtnCap Then cmdBtn.Delete
        Next
        Set cmdBtn = Nothing
        Set cmdBar = Nothing
    End Sub
    Sub pptGetImagesFromWord2()
        Dim wdApp As Object
        Dim doc As Object
        Dim docPath As String
        Dim ishp
        Dim count As Long
        
        Dim pre As Presentation
        Dim sld As Slide, shp As Shape
        
          With Application.FileDialog(msoFileDialogFilePicker)
            .InitialFileName = ActivePresentation.Path
            .Filters.Clear
            .Filters.Add "Word文档2003~2016", "*.doc*"
            .AllowMultiSelect = False
            .Title = "请选择图片所在的Word文档"
            If .Show = -1 Then
                docPath = .SelectedItems(1)
            Else
                MsgBox "您已取消选择,按“确定”退出程序。"
                Exit Sub
            End If
        End With
     On Error GoTo errh
        Set wdApp = CreateObject("word.application")
        Set doc = wdApp.documents.Open(docPath)
        
    
       Do While doc.Shapes.count > 0
            For Each ishp In doc.Shapes
                 ishp.ConvertToInlineShape
            Next ishp
        Loop
        
        Set pre = Application.Presentations.Add(msoTrue)
        pre.SaveAs Replace(docPath, ".doc", ".ppt")
        With pre.PageSetup
            SW = .SlideWidth
            SH = .SlideHeight
            PageRate = SW / SH
        End With
        
        Do While pre.Slides.count >= 2
            pre.Slides(2).Delete
        Loop
        
        For Each ishp In doc.inlineshapes
               '选中-复制
                ishp.Select
                wdApp.Selection.Copy
                '新建幻灯片,粘贴
                Set sld = pre.Slides.Add(pre.Slides.count + 1, ppLayoutBlank)
                sld.Select
                sld.Shapes.Paste
                Set shp = sld.Shapes(1)
                 '取消锁定纵横比
                 shp.LockAspectRatio = msoFalse
                shp.ScaleHeight 1, msoTrue
                shp.ScaleWidth 1, msoTrue
                shpWidth = shp.Width
                shpHeight = shp.Height
                ShpRate = shpWidth / shpHeight
    
                '锁定纵横比
                 shp.LockAspectRatio = msoTrue
                If ShpRate >= PageRate Then    '图片更宽
                    shp.Width = SW
                    shpHeight = shp.Height
                    shp.Top = SH / 2 - shpHeight / 2
                    shp.Left = 0
                Else    '图片更高
                    shp.Height = SH
                    shpWidth = shp.Width
                    shp.Left = SW / 2 - shpWidth / 2
                    shp.Top = 0
                End If
                
        Next ishp
        doc.Close False
        
    errh:
    
        pre.Save
        pre.Close
       wdApp.Quit
       Set doc = Nothing
       Set sld = Nothing
       Set pre = Nothing
        
    End Sub
    

      

  • 相关阅读:
    SpringMVC快速使用——基于注解
    SpringMVC快速使用——基于XML配置和Servlet3.0
    Logback
    软件设计原则
    常用软件官方网站和下载地址记录
    刚刚开通的博客
    Layui 上传附件前条件判断
    js 重置input内容的两种情况
    Java 集合与数组相互转换
    使用Freemarker输出word文档到浏览器与本地
  • 原文地址:https://www.cnblogs.com/nextseven/p/14428834.html
Copyright © 2020-2023  润新知