• 20161226xlVBA演示文稿替换文字另存pdf


    Const ModelText As String = "机构名称"
    Const ModelName As String = "测试文件.pptx"
    
    Sub NextSeven_CodeFrame()
        '应用程序设置
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Application.Calculation = xlCalculationManual
        '错误处理
        On Error GoTo ErrHandler
        '计时器
        Dim StartTime, UsedTime As Variant
        StartTime = VBA.Timer
    
        '变量声明
        Dim Wb As Workbook
        Dim Sht As Worksheet
        Dim Rng As Range
        Dim Arr As Variant
        Dim EndRow As Long
    
        Dim pApp As Object
        Dim Pre As Object
        'Dim pApp As PowerPoint.Application
        'Dim pre As PowerPoint.Presentation
    
        Dim FindStr As String
        Dim ReplaceStr As String
        Dim FilePath As String
        Dim FolderPath As String
        Dim tmp As String
    
        Dim FileName As String
        FileName = Left(ModelName, InStrRev(ModelName, ".") - 1)
        '实例化对象
        Set Wb = Application.ThisWorkbook
        Set Sht = Wb.Worksheets(1)
        FolderPath = Wb.Path & ""
        'Set pApp = New PowerPoint.Application
        Set pApp = CreateObject("PowerPoint.Application")
        Debug.Print FolderPath & ModelName
        Set Pre = pApp.Presentations.Open(FolderPath & ModelName)
        With Sht
            EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
            Set Rng = .Range("A1:Z" & EndRow)
            Arr = Rng.Value
            For i = LBound(Arr) To UBound(Arr)
                If i = 1 Then
                    FindStr = ModelText
                    ReplaceStr = Arr(i, 1)
                    FilePath = FolderPath & FileName & "_予" & Arr(i, 1) & ".pdf"
                    ReplaceAndPublish Pre, FilePath, FindStr, ReplaceStr
                Else
                    FindStr = Arr(i - 1, 1)
                    ReplaceStr = Arr(i, 1)
                    FilePath = FolderPath & FileName & "_予" & Arr(i, 1) & ".pdf"
                    ReplaceAndPublish Pre, FilePath, FindStr, ReplaceStr
                End If
            Next i
        End With
        '运行耗时
        UsedTime = VBA.Timer - StartTime
        'MsgBox "本次运行耗时:" & Format(UsedTime, "0.0000000秒")
    ErrorExit:        '错误处理结束,开始环境清理
        Pre.Close
        Set Pre = Nothing
        pApp.Quit
        Set pApp = Nothing
        Set Wb = Nothing
        Set Sht = Nothing
        Set Rng = Nothing
    
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        Application.Calculation = xlCalculationAutomatic
        Exit Sub
    ErrHandler:
        If Err.Number <> 0 Then
            MsgBox Err.Description & "!", vbCritical, "错误提示!"
            'Debug.Print Err.Description
            Err.Clear
            Resume ErrorExit
        End If
    End Sub
    Private Sub ReplaceAndPublish(ByVal Pre As Object, ByVal FilePath As String, ByVal FindText As String, ByVal ReplaceText As String)
        Dim sld As PowerPoint.Slide
        Dim shp As PowerPoint.Shape
        Dim Txt As String
        For Each sld In Pre.Slides
            For Each shp In sld.Shapes
                If shp.HasTextFrame = msoTrue Then
                    If shp.TextFrame.HasText Then
                        Txt = shp.TextFrame.TextRange.Text
                        If InStr(1, Txt, FindText) > 0 Then
                            shp.TextFrame.TextRange.Text = Replace(Txt, FindText, ReplaceText)
                            Exit For
                        End If
                    End If
                End If
            Next
        Next
        Pre.SaveAs FilePath, ppSaveAsPDF
    End Sub
    

      

  • 相关阅读:
    三、录制脚本Badboy录制脚本1
    三、录制脚本术语
    二、搭建Jmeter环境以及环境变量
    三、录制脚本Jmeter录制脚本2
    一、JMeter相关术语
    MySQL存储引擎
    创建线程CreateThread()
    关于category
    关于异常
    UIView和UIWindow
  • 原文地址:https://www.cnblogs.com/nextseven/p/7133841.html
Copyright © 2020-2023  润新知