VBA运行时错误-2147188720对象不存在

问题描述 投票:0回答:1

我试图运行到Excel它可以创建一个循环多个PowerPoint文件VBA代码。不过,我得到一个运行时错误,每次循环递增。当myshape.LockAspectRatio = False用于执行后的第一个任意迭代过程出现错误。

我也得到

运行时错误-2147188160 - “形状(未知成员):无效请求

ppslide.Shapes.PasteSpecial ppPasteEnhancedMetafile执行。这个执行过程中发生在随机时间。

这里的我想要做什么:exec_sorted是一家集的字典

For Each iter1 In accExec_sorted.Keys()

    Set ppapp = New PowerPoint.Application
    Set pppress = ppapp.Presentations.Add
    pppress.PageSetup.SlideSize = ppSlideSizeLetterPaper
    Set ppslide = pppress.Slides.Add(1, ppLayoutTitle)
    ppslide.Shapes(1).TextFrame.TextRange = iter1

    i = 2
    Set lenderID = accExec_sorted(iter1)

    For Each iter In lenderID
        ind_len.Range("l_id1") = iter
        Set ppslide = pppress.Slides.Add(i, ppLayoutBlank)


        ind_len.ChartObjects("Chart 6").Select
        Selection.Copy
        ppslide.Shapes.PasteSpecial ppPasteEnhancedMetafile
        Set myshape = ppslide.Shapes(1)
        myshape.LockAspectRatio = False

        myshape.Left = 420
        myshape.Top = 40
        myshape.Width = 290
        myshape.Height = 160

        ind_len.ChartObjects("Chart 7").Select
        Selection.Copy
        ppslide.Shapes.PasteSpecial ppPasteEnhancedMetafile
        Set myshape = ppslide.Shapes(2)
        myshape.LockAspectRatio = False

        myshape.Left = 420
        myshape.Top = 205
        myshape.Width = 290
        myshape.Height = 160


        i = i + 1

    Next iter

    pppress.SaveAs intro.Range("dest_path") & intro.Range("investor") & "_" & intro.Range("period") & "_" & iter1 & ".pptx"
    pppress.Close
    ppapp.Quit
    Set ppapp = Nothing

Next iter1
excel vba powerpoint powerpoint-vba
1个回答
1
投票

OK Shreyans,我不得不修改代码来在我结束工作和玩一些东西,但它的作品。后来才知道,插入你的代码我有什么。问题是,你想一个chartobject作为对象粘贴到演示文稿,而不是复制对象为图片。一旦我做到了,并设置对象没有它的工作。这里是我的代码。

注意:您可以修改回用Powerpoint.Application变量不使用创建对象。我只是做了该做在我身上更容易。

Sub CopyPastePicture()

    For Each iter1 In accExec_sorted.Keys()

        Set ppapp = CreateObject("PowerPoint.Application")
        Set pppress = ppapp.Presentations.Add
        pppress.PageSetup.SlideSize = 2
        Set ppslide = pppress.Slides.Add(1, 1)
        ppslide.Shapes(1).TextFrame.TextRange = iter1

        i = 2
        Set lenderID = accExec_sorted(iter1)

        For Each iter In lenderID
            ind_len.Range("l_id1") = iter

            Set ppslide = pppress.Slides.Add(i, 12)

            ind_len.ChartObjects("Chart 6").CopyPicture xlPrinter, xlPicture
            ppslide.Shapes.PasteSpecial 2
            Set myshape = ppslide.Shapes(ppslide.Shapes.Count)

            myshape.LockAspectRatio = False

            myshape.Left = 420
            myshape.Top = 40
            myshape.Width = 290
            myshape.Height = 160

            Set myshape = Nothing

            ind_len.ChartObjects("Chart 7").CopyPicture xlPrinter, xlPicture
            ppslide.Shapes.PasteSpecial 2
            Set myshape = ppslide.Shapes(ppslide.Shapes.Count)

            myshape.LockAspectRatio = False

            myshape.Left = 420
            myshape.Top = 205
            myshape.Width = 290
            myshape.Height = 160

            Set myshape = Nothing
            Set ppslide = Nothing

            i = i + 1

        Next iter

        pppress.SaveAs intro.Range("dest_path") & intro.Range("investor") & "_" & intro.Range("period") & "_" & iter1 & ".pptx"
        pppress.Close
        ppapp.Quit
        Set ppapp = Nothing
        Set pppress = Nothing
        Set ppslide = Nothing
        Set myshape = Nothing

    Next iter1

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.