VBA: PasteSpecial из Excel в PowerPoint с «Shapes (неизвестный член): неверный запрос».ошибка - PullRequest
1 голос
/ 03 мая 2019

Это часть моего кода, который вставляет данные из Excel в PowerPoint.Обычно это работает, но время от времени (может быть, после 10 или 20 повторов, каждый с примерно 15 PasteSpecials того же типа), я получаю сообщение об ошибке: «Фигуры (неизвестный член): неверный запрос. Указанный тип данныхнедоступен."Отладчик указывает на строку mySlide.Shapes.PasteSpecial DataType:=2.Может кто-нибудь выяснить почему?

Если бы вы спросили меня, почему я использую этот тип данных, я могу сказать только потому, что он работал.Я попытался, и этот, казалось, точно скопировал то, что я видел в Excel, в PowerPoint (другие «забыли» границы и тому подобное).

Sub MReport()

    Dim rng As Range, rngAn As Range
    Dim myShape As PowerPoint.Shape
    Dim DestinationPPT As String
    Dim lRow As Long, lCol As Long
    Dim wbM As Workbook
    Dim wsEm As Worksheet
    Dim CSGSheet As Variant, CSGSheets As Variant
    Dim MonthNum As String, YearNum As String

    Set PowerPointApp = New PowerPoint.Application
    DestinationPPT = "C:\VBA\ReportTemplate.pptm"
    Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT)

    YearNum = "2019"
    MonthNum = "02"

    Set wbM = Workbooks.Open("C:\VBA\" & YearNum & "\" & Right(YearNum, 2) & "_" & MonthNum & "\NumbersM_" & YearNum & "_" & MonthNum & ".xlsm", UpdateLinks:=False)

    CSGSheets = Array("CSG_BM", "CSG_AR", "CSG_ISF")

    For Each CSGSheet In CSGSheets
        lRow = wbM.Sheets(CSGSheet).Cells(Rows.Count, "B").End(xlUp).End(xlUp).End(xlUp).Row + 1
        lCol = wbM.Sheets(CSGSheet).Cells(lRow - 1, "B").End(xlToRight).Column + 1
        Set rng = wbM.Sheets(CSGSheet).Range(wbM.Sheets(CSGSheet).Cells(2, 2), wbM.Sheets(CSGSheet).Cells(lRow, lCol))
        rng.Copy
        Set mySlide = myPresentation.Slides.Add(myPresentation.Slides.Count + 1, 12)
        PowerPointApp.ActiveWindow.ViewType = ppViewNormal
        mySlide.Shapes.PasteSpecial DataType:=2  '2 = ppPasteEnhancedMetafile
        Set myShape = mySlide.Shapes(mySlide.Shapes.Count)

        With myShape
          .Height = 410
          .Top = 70
          .Left = 5
        End With
    Next

    wbM.Close SaveChanges:=False
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...