使用Powerpoint for macos自动合并pptx文件

‘
‘ references:
‘ https://www.rondebruin.nl/mac/mac015.htm
‘ https://stackoverflow.com/questions/5316459/programmatically-combine-slides-from-multiple-presentations-into-a-single-presen
‘ https://msdn.microsoft.com/en-us/library/office/hh710200(v=office.14).aspx
‘

Sub MergePPTX()
    On Error Resume Next
    MyPath = MacScript("return (path to documents folder) as String")
    ‘Or use MyPath = "Macintosh HD:Users:Ron:Desktop:TestFolder:"

    ‘ In the following statement, change true to false in the line "multiple
    ‘ selections allowed true" if you do not want to be able to select more
    ‘ than one file. Additionally, if you want to filter for multiple files, change
    ‘ {""com.microsoft.Excel.xls""} to
    ‘ {""com.microsoft.excel.xls"",""public.comma-separated-values-text""}
    ‘ if you want to filter on xls and csv files, for example.
    MyScript = _
    "set applescript‘s text item delimiters to "","" " & vbNewLine & _
               "set theFiles to (choose file of type " & _
             " {""org.openxmlformats.presentationml.presentation""} " & _
               "with prompt ""Please select a file or files"" default location alias """ & _
               MyPath & """ multiple selections allowed true) as string" & vbNewLine & _
               "set applescript‘s text item delimiters to """" " & vbNewLine & _
               "return theFiles"

    MyFiles = MacScript(MyScript)
    On Error GoTo 0

    If MyFiles <> "" Then
        Presentations.Add
        Dim fileName As String
        MySplit = Split(MyFiles, ",")
        For N = LBound(MySplit) To UBound(MySplit)
            fileName = Replace(MySplit(N), "sys:", "/")
            fileName = Replace(fileName, ":", "/")
            ImportFromPPT fileName, 1, 2
        Next N
    End If
End Sub

Sub ImportFromPPT(fileName As String, SlideFrom As Long, SlideTo As Long)
    Dim SrcPPT As Presentation, SrcSld As Slide, Idx As Long, SldCnt As Long

    Set SrcPPT = Presentations.Open(fileName, , , msoFalse)
    SldCnt = SrcPPT.Slides.Count

    If SlideFrom > SldCnt Then Exit Sub
    If SlideTo > SldCnt Then SlideTo = SldCnt

    For Idx = SlideFrom To SlideTo Step 1
        Set SrcSld = SrcPPT.Slides(Idx)
        SrcSld.Copy
        With ActivePresentation.Slides.Paste
            .Design = SrcSld.Design
            .ColorScheme = SrcSld.ColorScheme
            ‘ if slide is not following its master (design, color scheme)
            ‘ we must collect all bits & pieces from the slide itself

            ‘ >>>>>>>>>>>>>>>>>>>>

            If SrcSld.FollowMasterBackground = False Then
                .FollowMasterBackground = False
                .Background.Fill.Visible = SrcSld.Background.Fill.Visible
                .Background.Fill.ForeColor = SrcSld.Background.Fill.ForeColor
                .Background.Fill.BackColor = SrcSld.Background.Fill.BackColor

                ‘ inspect the FillType object
                Select Case SrcSld.Background.Fill.Type
                    Case Is = msoFillTextured
                        Select Case SrcSld.Background.Fill.TextureType
                        Case Is = msoTexturePreset
                            .Background.Fill.PresetTextured (SrcSld.Background.Fill.PresetTexture)
                        Case Is = msoTextureUserDefined
                        ‘ TextureName gives a filename w/o path
                        ‘ not implemented, see picture handling
                        End Select

                    Case Is = msoFillSolid
                        .Background.Fill.Transparency = 0#
                        .Background.Fill.Solid

                    Case Is = msoFillPicture
                        ‘ picture cannot be copied directly, need to export and re-import slide image
                        If SrcSld.Shapes.Count > 0 Then SrcSld.Shapes.Range.Visible = False
                        bMasterShapes = SrcSld.DisplayMasterShapes
                        SrcSld.DisplayMasterShapes = False
                        SrcSld.Export SrcPPT.Path & SrcSld.SlideID & ".png", "PNG"

                        .Background.Fill.UserPicture SrcPPT.Path & SrcSld.SlideID & ".png"
                        Kill (SrcPPT.Path & SrcSld.SlideID & ".png")

                        SrcSld.DisplayMasterShapes = bMasterShapes
                        If SrcSld.Shapes.Count > 0 Then SrcSld.Shapes.Range.Visible = True

                    Case Is = msoFillPatterned
                        .Background.Fill.Patterned (SrcSld.Background.Fill.pattern)

                    Case Is = msoFillGradient

                        ‘ inspect gradient type
                        Select Case SrcSld.Background.Fill.GradientColorType

                        Case Is = msoGradientPresetColors
                            .Background.Fill.PresetGradient _
                                SrcSld.Background.Fill.GradientStyle, _
                                SrcSld.Background.Fill.GradientVariant, _
                                SrcSld.Background.Fill.PresetGradientType
                        Case Is = msoGradientOneColor
                            .Background.Fill.OneColorGradient _
                                SrcSld.Background.Fill.GradientStyle, _
                                SrcSld.Background.Fill.GradientVariant, _
                                SrcSld.Background.Fill.GradientDegree
                        End Select

                    Case Is = msoFillBackground
                        ‘ Only shapes - we shouldn‘t come here
                End Select
            End If

            ‘ >>>>>>>>>>>>>>>>>>>>

        End With
    Next Idx

End Sub
时间: 2024-10-13 17:23:52

使用Powerpoint for macos自动合并pptx文件的相关文章

PowerPoint 打开文档发现.pptx中胡内容有问题

一.问题的提出 有一个文件,在window 7操作系统中通过邮箱地址保存到本地,结果打开的时候出现[PowerPoint 打开文档发现 文件.pptx中胡内容有问题] 然后提示[如果您信任此演示文稿的来源,请单击“修复”.] 单击修复时出现[访问 G:\文件.pptx 时出错] 二.问题的分析 对于从网络下载下来的文档,系统默认将其属性设置为锁定,目的是为了阻止它对系统进行破坏. 三.解决方法 有两种方法,第一种如下: 有adobe acrobat XI专业版这个软件,用这个软件将pptx文件转

七色花基本权限系统(6)- 让EntityFramework Code First自动合并/迁移/数据初始化

在前一章节里,我们已经能够对映射字段进行配置了.但在演示中,我们通过删除原数据库让EF重新创建的方式,才把新的字段信息更新(其实是破而后立)到了数据库.这显然无法让人接受.在这篇日志里,将演示"在实体类发生改变时如何自动更新数据库中的表结构"和"在EF创建数据库的时候如何初始化一批数据". 合并/迁移 合并是指"新的实体模型映射到数据库中,更新其结构",例如: 新增了实体类,那在数据库中就是新增数据表. 删除了实体类,那在数据库中就是删除数据表.

使用compass自动合并css雪碧图(css sprite)(转载)

css雪碧图又叫css精灵或css sprite,是一种背景图片的拼合技术.使用css雪碧图,能够减少页面的请求数.降低图片占用的字节,以此来达到提升页面访问速度的目的.但是它也有令人诟病的地方,就是拼图和后期维护的成本比较大.也正是因为这一点,导致很多开发者懒于使用css雪碧图. 对于这种耗时.枯燥.重复性的工作,最好的解决方法还是交给工具去处理.本文就介绍下怎样使用compass来自动合并css雪碧图. 安装compass 首先请确认电脑已经安装ruby及sass环境,ruby及sass的安

less实现小图自动合并大图

1. 执行安装命令: cnpm install grunt-spritesmith --save-dev      //在package.json里自动生成"grunt-spritesmith": "^4.6.0" 2. 查找配置文件:通过npm官网,找到geetting started配置文件,将代码sprite那段拷入grutefile.js文件 sprite:{ all: { src: 'path/to/your/sprites/*.png',   //要合并

CSS Sprite小图片自动合并工具

css-sprite是将css样式中零星的小图标,小图片合并成大图显示,这样能减小服务器并发连接数,减小服务器负载和带宽使用,有很高的实用价值.这里介绍一些自动合并图片并生成样式的工具. NodeJS css-sprite css-sprite是一个基于NodeJS实现的css切图自动合并工具,能自动将小图片合成大图,支持retina sprites和base64输出格式. 注* retina sprites视网膜屏幕指的是接近人眼能够直观感受到的基础色素级别的输出格式.Base64是将图片转化

合并BIN文件的两种方法(转)

源:http://blog.chinaunix.net/uid-20745340-id-1878803.html 合并BIN文件的两种方法 在单片机的开发过程中,经常需要将两个单独的BIN文件合并成一个文件,方便烧写和生产.下面结合STM32的IAP Bootloader Code和Application Code的合并,介绍两种合并BIN文件的方法. 首先简单介绍一下STM32的IAP.IAP(In-application-programming),即在应用中编程.有了它,产品发布之后,仍然可

VisualStudio 合并代码文件

如果有相同的类,一般可以使用 partial 让他写在多个文件,那么如何把多个文件合并?请看 MainWindow.xaml 和 MainWindow.xaml.cs 其中 代码文件被折叠,那么如何做代码的折叠 简单的方法,使用 SublimeText 打开 工程文件,当然 如果使用 VSC 也是可以,但是因为我用了 SublimeText 比较顺,所以就推荐使用.我收藏很多的工具,大家可以在我的博客看到. 工程文件就是创建一个工程自动生成的,如果创建一个空白的程序,那么就可以从创建的文件夹看到

Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健壮的用于管理大型项目的框架,非常适合用来管理大型项目的发布和维护. 贯穿整个开发周期,master和develop分支是一直存在的,master分支可以被视为稳定的分支, 而develop分支是相对稳定的分支,特性开发会在feature分支上进行,发布会在release分支上进行,而bug修复则会在

Makefile中自动生成头文件依赖

为什么需要自动生成头文件依赖? 编译单个源文件时,需要获取文件中包含的头文件的信息,但是一般的Makefile不会在规则中明确写明文件依赖的头文件,所以单独修改头文件后,不会导致包含头文件的源文件重新编译.如果每次手动的添加头文件依赖,又会非常的繁琐,所以需要一种自动生成依赖的方法. 编译器中神奇的选项 使用$(CC)中的-M命令就可以完美的解决问题,因为-M选项可以将源文件依赖的所有头文件,自动解析出来. 例子:在当前路径下,编辑test.c和test.h文件,test.c如下所示,test.