Это часть моего кода, который вставляет данные из 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