【问题标题】:delete pictures from slides in powerpoint from excel从 Excel 中删除幻灯片中的图片
【发布时间】:2019-03-29 21:51:40
【问题描述】:

我试图弄清楚为什么编码不起作用,但以下代码应该从 excel 打开一个 powerpoint 并清除现有幻灯片以替换为新图片 - 但是我得到以下内容:

错误 91:未设置对象变量或块变量。

我尝试了堆栈中的其他几个代码,但无法使其正常工作.. 有什么帮助吗?甲板包含幻灯片 2 到幻灯片 9 以清除。

Sub ppt_export()
Dim DestinationPPT As String
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim objApp As Object, objSlide As Object, ObjShp As Object, objTable As` Object

DestinationPPT = "C:\Users\\Desktop\Summary.pptx"
Set ppApp = CreateObject("PowerPoint.Application")
Set ppPres = ppApp.Presentations.Open(DestinationPPT)
'delete the shapes from the renew the template

 For i = ppSlide.Shapes.Count To 1 Step -1
Set ppShape = ppSlide.Shapes(p)
If ppShape.Type = msoPicture Then ppShape.Delete
Next
End Sub

我想知道如何更正代码,以便通过将 excel 工作表作为图片复制到相应幻灯片中来继续编码。

【问题讨论】:

  • Option Explicit 添加到模块顶部,这会使您的问题变得明显。 For 语句使用 i,但随后您尝试在循环内使用 p
  • @BigBen 谢谢,我将p 切换为i,但它循环到同样的错误。

标签: excel vba powerpoint


【解决方案1】:

首先也是最重要的,将Option Explicit添加到代码模块的顶部,它会标记您拥有的各种未声明的变量:pippSlide、和ppShape

那么代码可能看起来像这样:

Option Explicit

Sub ExportToPPT()
    Dim ppApp As PowerPoint.Application
    Set ppApp = New PowerPoint.Application

    Dim ppFileName As String
    ppFileName = "C:\Users\\Desktop\Summary.pptx"

    Dim ppPres As PowerPoint.Presentation
    Set ppPres = ppApp.Presentations.Open(Filename:=ppFileName)

    Dim ppSlide As PowerPoint.Slide

    Dim i As Integer
    For i = 2 To 9
        Set ppSlide = ppPres.Slides(i)

        Dim j As Integer
        For j = ppSlide.Shapes.Count To 1 Step -1
            If ppSlide.Shapes(j).Type = msoPicture Then
                ppSlide.Shapes(j).Delete
            End If
        Next j
    Next i
End Sub

【讨论】:

  • 太棒了!乐于助人。
  • 您是否也知道为什么当我在代码Dim lRow, lCol As Integer 和以下Sheets("Waterfall").Select lRow = Range("C" & Rows.Count).End(xlUp).Row lCol = cells(1, Columns.Count).End(xlToLeft).Column 中执行以下继续操作时我会设置对象变量或未设置块变量
  • 哪一行会报错?顺便说一句,LongInteger 更可取;你可以改成Dim lRow as Long, lCol as Long
  • 谢谢,我把它们改成了as Long - 错误的行是lCol = cells(1, Columns.Count).End(xlToLeft).Column
  • 我所期望的。你有一个名为cells的变量吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
  • 2015-05-12
  • 1970-01-01
相关资源
最近更新 更多