У меня есть макрос VBA, который порой требует от меня создания нового слайда с новой встроенной электронной таблицей Excel, а затем отредактируйте эту электронную таблицу. Упрощенная версия этого кода:Создание и доступ к OLEObject
Dim sld As Slide
Dim shp As shape
Dim pptWorkbook As Object
Set sld = ActivePresentation.slides.add(ActivePresentation.slides.Count + 1, ppLayoutBlank)
Set shp = sld.Shapes.AddOLEObject(100, 100, 100, 100, "Excel.Sheet")
DoEvents
If shp.Type = msoEmbeddedOLEObject Then
'Error thrown here
Set pptWorkbook = shp.OLEFormat.Object
pptWorkbook.Sheets(1).Cells(1, 1).value = "Stuff"
End If
Около половины времени работы этого кода приводит к ошибке:
Method object of object OLEFormat failed
Это происходит при вызове shp.OLEFormat.Object, я считаю, что это из-за «AddOLEObject», не создающего объект excel во времени, чтобы обеспечить доступ к свойству (но это всего лишь гипотеза). Я пробовал различные способы обойти это с помощью функций обработки ошибок и спящего режима, но до сих пор мне не удалось создать новый объект excel и изменить его содержимое в пределах одной и той же функции без возникновения некоторой ошибки.
Итак, мой вопрос: как вы, с VBA, добавили новую встроенную электронную таблицу Excel в документ PowerPoint и отредактировали ее содержимое в пределах одной и той же функции/суб?
Update 1
Я успешно запустить этот код на других машинах, так что этот вопрос может быть экологическим, связанным с моей системой, а не проблема с моей методологией. Это также может быть связано с разрешением, аналогично This Post.
Update 2
Я переустановил Office, перезапущен, запустите PowerPoint в качестве администратора, и добавил логику для учета выпуска, описанный в This post. По-прежнему нет прогресса, интересно, может ли кто-нибудь повторить ошибку, которую я получаю?
Могу ли я спросить, почему вы добавили объект .Object в конце этой строки? – Kathara
Большой вопрос @ Kathara, я должен уточнить, я добавил .Object, чтобы я мог получить доступ к вновь созданному «Excel.Sheet» и редактировать связанные с ним листы, это поведение описано здесь: https://msdn.microsoft.com/ en-us/library/office/aa213932% 28v = office.11% 29.aspx –
Хорошо, интересно. Еще один: вы работаете над окнами, не так ли? – Kathara