powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как закрыть Excel из PowerPoint??
6 сообщений из 6, страница 1 из 1
Как закрыть Excel из PowerPoint??
    #38174619
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется: Диаграмма в PowerPoint (данные для неё хранятся тут же – в связанной таблице)
Задача: Изменить значение диаграммы динамически, с помощью VBA – кода.

При обращении VBA-кода к данным для диаграммы – все проходит, успешно, в соответствии с кодом, значение ячейки “B1” изменяется на “12345”, данные в диаграмме при этом динамически меняются. Код:

For Each oSld In ActivePresentation.Slides
For Each oShp In oSld.Shapes
' ДЛЯ КАЖДОГО СЛАЙДА ИЩЕМ ДИАГРАММУ
If oShp.HasChart Then
oShp.Chart.ChartData.Activate
oShp.Chart.ChartData.Workbook.Worksheets(1).Range("B1").Value = "12345"
oShp.Chart.ChartData.Workbook.Close False
oShp.Chart.ChartData.Workbook.Application.Quit
End If
End If

Next oShp
Next oSld

Если число таких диаграмм, к которым нужно обратиться = 2-4, всё проходит нормально, если же число диаграмм для изменения становится большим – после отработки макроса приложение Excel остаётся “висеть” в диспетчере задач, и становится видимым.
То есть – если потребуется в презентации динамически с помощью кода изменить 80 диаграмм – то после отработки макроса пользователю придётся закрывать 80 окон Excel, но как правило до такого и не доходит – Excel на пару с PowerPoint’ом ругаются на нехватку памяти, выдавая при этом различные глючные сообщения…Что делать?
...
Рейтинг: 0 / 0
Как закрыть Excel из PowerPoint??
    #38175389
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю теперь так:

Dim xlApp As Object, xlWB As Object

Set xlApp = CreateObject("Excel.Application")
For Each oSld In ActivePresentation.Slides
For Each oShp In oSld.Shapes

If oShp.HasChart Then
With oShp.Chart.ChartData
.Activate
ActivePresentation.SlideShowWindow.Activate

Set xlWB = oShp.Chart.ChartData.Workbook
xlWB.Worksheets(1).Range("B1").Value = vsp
xlWB.Close False
Set xlWB = Nothing

End With
End If




Next oShp
Next oSld
xlApp.Quit
...
Рейтинг: 0 / 0
Как закрыть Excel из PowerPoint??
    #38236603
TataS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня стоит такая же задача: исправить конкретную диаграмму в PowerPoint путем редактирования табличных значений.
Запускаю ваш скрипт из MS Visual Studio и выдается ошибка на HasChart:

If oShp.HasChart Then ...
Посмотрела в отладчике, действительно нет такого свойства.
Может знаете, как это обойти?

Вот код:
Dim objPPT As Object
objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True

Dim objPres As PowerPoint.Presentation = objPPT.Presentations.Open("C:\SAF1.ppt")
Dim xlApp As Object = CreateObject("Excel.Application")
Dim xlWB As Object

For Each oSld In objPres.Slides

If oSld.SlideIndex = 7 Then ' 7-ой слайд

' ДЛЯ КАЖДОГО СЛАЙДА ИЩЕМ ДИАГРАММУ
For Each oShp In oSld.Shapes
If oShp.HasChart Then

' Редактируем диаграмму в презентации PowerPoint
With oShp.Chart.ChartData
.Activate()
objPPT.SlideShowWindow.Activate()

xlWB = oShp.Chart.ChartData.Workbook
xlWB.Worksheets(1).Range("B2").Value = 200
xlWB.Close(False)
xlWB = Nothing

End With
End If

Next oShp
End If

Next oSld

xlApp.Quit()
xlApp = Nothing

'--- Очистка PowerPoint
objPres.Close()
objPPT.Quit()
objPPT = Nothing
...
Рейтинг: 0 / 0
Как закрыть Excel из PowerPoint??
    #38238714
TataS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TataS,

Мне необходимо отредактировать из кода Visual Basic (MS Visual Studio) таблицу диаграммы в PowerPoint.
Прогуглила все что можно, но так ничего и не нашла: либо создается новая презентация и туда копируются созданные в Excel диаграммы, либо макросы, которые в моем случае неприменимы.
Неужели никто не сталкивался с этой проблемой?
...
Рейтинг: 0 / 0
Как закрыть Excel из PowerPoint??
    #38243400
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TataS, вам нужно вставить блок кода ON ERROR RESUME NEXT перед тем как ищете свойство HASCHART.
Он ловит ошибку, и если находит - не тормозит программу, а продолжает дальше.
Посмотрите примеры кода как работает эта строчка, станет понятно.
...
Рейтинг: 0 / 0
Как закрыть Excel из PowerPoint??
    #38243468
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TataS, Santa89
Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как закрыть Excel из PowerPoint??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]