使用 excel 我需要打开 PPT 并创建 ."pdf" 的“.gif”图像并保存

Using excel I need to open PPT and create ".gif" image of a ."pdf" and save it

首先让我解释一下我在构建什么。我有一个文件夹,每天添加 50-100 个 .pdf。每个 .pdf 文件都必须扫描并重新保存,并更改文件名以显示工作地点和完成文件的员工。然后需要通过超链接将文件附加到 excel 电子表格中的对象,以便进行跟踪。由于 programming/security 的工作限制,无法从 excel VBA 中打开 .pdf。这导致流程的自动化程度为零,每个文件都需要使用 adobe 打开、审阅、重新保存、在电子表格中创建对象,然后分别进行超链接。我正在尝试创建一个用户表单,它将首先遍历 .pdf 文件夹并保存每个 .pdf 的 .gif 图像,然后允许用户在 excel 用户表单中将每个 .gif 作为图片查看,然后保存 VBA 将重命名文件,在电子表格中创建对象并附加超链接。下面是我打开新 PPT、插入幻灯片、然后插入 .pdf 并最后将其重新保存为 .gif 的代码。我在“pagesetup.slidewidth”上收到“运行 时间错误 438,对象不支持此 属性 或方法”。我已经很多年没有使用 PPT 了,我很困惑为什么 excel 不使用这个语法。

Option Explicit

Sub ConvertPDFtoGIF()

Dim OriginalPath As String
Dim NewPath As String
Dim NewPPT As Object
Dim PDFWidth As Single
Dim PDFHeight As Single
Dim sh As Shape

OriginalPath = "C:\Users\hareb\Desktop\Work Tracker\Test63A1010100003112022 - Copy (2).pdf"
NewPath = "C:\Users\hareb\Desktop\Work Tracker\Test\Test\TestGIF.GIF"

PDFWidth = 8.5
PDFHeight = 11

Set NewPPT = CreateObject("Powerpoint.application")

NewPPT.Visible = True
NewPPT.Presentations.Add

    With NewPPT.PageSetup
        .SlideWidth = PDFWidth
        .SlideHeight = PDFHeight
    End With

NewPPT.Slides.addslide 1, NewPPT.slidemaster.customlayouts(1)

Set sh = NewPPT.Slides(1).Shapes.AddOLEObject(0, 0, PDFWidth, PDFHeight, , OriginalPath)

Call NewPPT.Slides(1).Export(NewPath, "GIF")

End Sub

无论是 OM 中的错误还是什么,如果您将 Presentation 的引用作为对象变量,似乎会更快乐。 Aircode 到我实际上没有添加 PDF ole 对象并将幻灯片导出为 GIF 的程度,但其余的工作:

Option Explicit

Sub ConvertPDFtoGIF()

Dim OriginalPath As String
Dim NewPath As String
Dim NewPPT As Object
Dim PDFWidth As Single
Dim PDFHeight As Single
Dim sh As Shape
' I added this
Dim PPTPres As Object

OriginalPath = "C:\Users\hareb\Desktop\Work Tracker\Test63A1010100003112022 - Copy (2).pdf"
NewPath = "C:\Users\hareb\Desktop\Work Tracker\Test\Test\TestGIF.GIF"

PDFWidth = 8.5
PDFHeight = 11

Set NewPPT = CreateObject("Powerpoint.application")

NewPPT.Visible = True

' get a reference to the presentation in PPTPres:
Set PPTPres = NewPPT.presentations.Add

' and use PPTPres to refer to the presentation and its
' properties/methods from here on:
PPTPres.Slides.AddSlide 1, PPTPres.SlideMaster.CustomLayouts(1)

    With PPTPres.PageSetup
        .SlideWidth = PDFWidth
        .SlideHeight = PDFHeight
    End With

Set sh = PPTPres.Slides(1).Shapes.AddOLEObject(0, 0, PDFWidth, PDFHeight, , OriginalPath)

Call PPTPres.Slides(1).Export(NewPath, "GIF")

End Sub

谢谢史蒂夫,这正是我所需要的。我能够调整代码并且知道它工作得很好。这是最终代码:

Sub ConvertPDFtoGIF()

Dim OriginalPath As String
Dim NewPath As String
Dim NewPPT As Object
Dim PDFWidth As Single
Dim PDFHeight As Single
Dim sh As Object
Dim PPTPres As Object

OriginalPath = "C:\Users\hareb\Desktop\Work Tracker\Test63A1010100003112022 - Copy (2).pdf"
NewPath = "C:\Users\hareb\Desktop\Work Tracker\Test\Test\TestGIF.GIF"

PDFWidth = 8.5 * 72
PDFHeight = 11 * 72

Set NewPPT = CreateObject("Powerpoint.application")

NewPPT.Visible = True

Set PPTPres = NewPPT.presentations.Add

PPTPres.Slides.AddSlide 1, PPTPres.SlideMaster.CustomLayouts(1)

    With PPTPres.PageSetup
        .SlideWidth = PDFWidth
        .SlideHeight = PDFHeight
    End With

Set sh = PPTPres.Slides(1)

sh.Shapes.AddOLEObject 0, 0, PDFWidth, PDFHeight, , OriginalPath


Call PPTPres.Slides(1).Export(NewPath, "GIF")

NewPPT.Quit

End Sub