2016-07-18 11 views
1

Я создаю файл PowerPoint и добавляю слайды в него программно через Access-VBA, и он работает нормально до сих пор. Но теперь клиент хочет, чтобы ppt был невидимым или сведен к минимуму только во время генерации. Сразу после активации объекта ppt я установил его с минимальным значением, но затем, во время «Slides.Add», он снова появляется, поэтому мне нужно снова свернуть его. Проблема в том, что это приводит к перемещению курсора в ppt вместо документа, над которым он работает. Итак, есть ли способ, я мог бы полностью свести его к минимуму или сделать это поколение работой в фоновом режиме и открыть его только после его завершения? код я использую:Как добавить слайды в Powerpoint путем доступа к VBA, сохраняя его только сведенным к минимуму

Dim shpGraph As Object, Shpcnt As Integer, FndGraph As Boolean 
Dim lRowCnt, lColCnt, lValue As Long, CGFF_FldCnt As Integer 
Dim OPwrPnt As Object, OpwrPresent As Object, OpwrSlide As Object 
Set OPwrPnt = CreateObject("Powerpoint.application") 
Set OpwrPresent = OPwrPnt.Presentations.Add(WithWindow:=msoFalse) 
Set OpwrSlide = OpwrPresent.Slides.Add(slideCounter, PpSlideLayout.ppLayoutTitle) 
OPwrPnt.WindowState = ppWindowMinimized 
slideCounter = slideCounter + 1 
lheight = OPwrPnt.ActivePresentation.PageSetup.SlideHeight/2 
lwidth = OPwrPnt.ActivePresentation.PageSetup.SlideWidth/1 
LLeft = 0 
lTop = OPwrPnt.ActivePresentation.PageSetup.SlideHeight/4 
Set shpGraph = OpwrPresent.Shapes.AddOLEObject(Left:=LLeft, _ 
       Top:=lTop, Width:=lwidth, Height:=lheight, _ 
       ClassName:="MSGraph.Chart", Link:=0).OLEFormat.Object 

Я написал код, чтобы минимизировать WindowState непосредственно до и после Add функции, но все же он всплывает только на долю секунды, следовательно, перемещение фокуса курсора из любого документ они работают на ppt, чего они не хотят. Итак, как я могу сохранить его полностью сведенным к минимуму?

+0

Лучшей рекомендацией было бы предварительно заполнить контрольную точку. Это может быть сложно, если вы не знаете сколько слайдов понадобится, но если вы, то просто добавьте ct количество слайдов, свести к минимуму документ, затем перебирать слайды по индексу в цикле – RGA

+0

@RGA Спасибо за ответ, но это то, что я уже делаю, этот фрагмент кода - это его свернутая версия. Но они хотят, чтобы сразу после нажатия кнопки «Создать» генерация ppt должна происходить в фоновом режиме и не должна всплывать в любое время, прежде чем завершать ее. –

ответ

1

Вы можете открыть объект Powerpoint без окна (при условии, что вы никогда не использовать Select или любых Active... ссылки

Set oPPTPres = oPPTApp.Presentations.add(WithWindow:=msoFalse) 

затем, добавив слайды в эту презентацию должны проводиться полностью невидимо. После этого, я полагаю, вы будете нужно просто сохранить, закрыть и снова открыть презентацию (с параметром WithWindow, установленным в true), чтобы просмотреть его.

+0

Спасибо, не могли бы вы дать мне простой фрагмент кода того, что вы хотите рассказать. Это было бы очень полезно. –

+0

@HemantSisodia - фрагмент чего? – RGA

+0

ok lemme сначала поиграйте с вашим предложением. –

 Смежные вопросы

  • Нет связанных вопросов^_^