Вопрос

Кто -нибудь знает, что ждет в будущем для программирования VBA/VSTO в PowerPoint? Я работал над проектом офисной автоматизации и считаю, что это разочаровывает работать с PowerPoint, в частности, так как это, кажется, на один уровень ниже поддержки VBA, найденной в Excel или Word.

Такое ощущение, что MS пытается отобрать поддержку VBA в PowerPointsInce, что они сбросили записи макроса в версии 2007, и Object Model не имеет некоторых ключевых функций поддержки.

Это было полезно?

Решение

Я не уверен, что это ответ, который вы хотите услышать, но разработка в PowerPoint с VBA на самом деле хорошо. Я делаю это немного (а также слово и Excel), и это достаточно надежно. OM PowerPoint, которая может быть запрограммирована с VBA, обновляется с каждой из новых версий PPT. В PPT 2007 вы можете создать пользовательский XML против Любые Объект на слайде - гораздо более мощный, чем варианты, доступные в Excel и Word. Напротив, Word 2007 имеет контроль контента, что для того, чтобы PPT был каким-то добрым кристаллом, сообщает о замене легкого веса, это выиграло бы. В PPT 2010 (бета) вы можете программно создавать, например, SmartArt, как вы можете с Word/Excel 2010. Вы также можете программно работать с элементами медиа лучше, чем раньше. VSTO, с точки зрения ОМ, не предлагает гораздо больше, чем VBA.

Это может зависеть только от ваших потребностей - вы создаете стандартные пули -слайды? Вы делаете расширенную анимацию? Вы делаете отчеты? Вы создаете Elearning «Приложения»? Если у вас есть конкретные вопросы на ОМ, мы можем попытаться помочь вам здесь (но, возможно, функции просто не существует).

Согласился с тем, что удаление макро -рекордера вроде отстой, это было полезной особенностью. Прямая работа с PML/DML также является болью. Есть вещи, которые я бы хотел, чтобы ОМ также поддерживал. Но в совместном случае с пещерой я не верю, что VBA уйдет в ближайшее время.


ПРИМЕЧАНИЕ: ЭТО НЕ РАБОТАЕТ. Анкет Он предоставляется только в качестве отправной точки, если люди хотят попытаться превратить это в то, что может работать (Если вы можете заставить его работать, пожалуйста, не стесняйтесь редактировать этот пост).

  1. Создайте класс под названием «clspptevents»
  2. Вставьте в следующий код.

    Public WithEvents PPTEvent As Application
    Private Declare Function GetCursorPos Lib "user32" (ByVal lpPoint As POINTAPI) As Long
    Private Type POINTAPI
        x As Long
        y As Long
    End Type
    Dim ret As Long
    Dim mousePosition As POINTAPI
    Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
        Dim ElementID As Long
        Dim Arg1 As Long
        Dim Arg2 As Long
        With Sel
            If .Type = ppSelectionShapes Then
                Dim sr As ShapeRange
                sr = .ShapeRange
                If sr.Type = msoChart Then
                    Dim sh As Shape
                    Dim slideNumber As Integer
                    slideNumber = ActiveWindow.View.Slide.SlideIndex
                    sh = ActivePresentation.Slides(slideNumber).Shapes(sr.Name)
                    Dim crt As Chart
                    crt = sh.Chart
                    H = ActiveWindow.Height
                    w = ActiveWindow.Width
                    ret = GetCursorPos(mousePosition)
                    x = mousePosition.x
                    y = mousePosition.y
                    crt.GetChartElement(x, y, ElementID, Arg1, Arg2)
                    MsgBox("X: " & x & ", Y: " & y & vbNewLine & _
                    "ElementID: " & ElementID & ", Arg1: " & Arg1 & ", Arg2: " & Arg2)
                End If
            End If
        End With
    End Sub
    
  3. В обычном модуле вы можете запустить/остановить обработку событий с этим:

    Public newPPTEvents As New clsPPTEvents
    Sub StartEvents()
        Set newPPTEvents.PPTEvent = Application
    End Sub
    Sub EndEvents()
        Set newPPTEvents.PPTEvent = Nothing
    End Sub
    

Обратите внимание, что в коде #2 он не работает из -за того, что возвращает GetCurspors, который является экраном x, Y. При просмотре события кажется, что то, что хочет GetChartelem Просто сама диаграмма.

Другие советы

PowerPoint никогда не была популярной платформой для разработки VBA. Я могу понять, что в этом контексте я могу понять сбросить функции пользовательского интерфейса. TT очень легко включить поддержку VBA для PowerPoint в силу Excel и Word - что не уйдет в ближайшее время, если вообще. Мои деньги будут в долгосрочной поддержке в долгосрочной перспективе, при этом Microsoft для проблем с плохой или несуществующей помощи от Microsoft.

Помните, что MS - это обратная совместимость - и они очень осторожны, когда бросают ее.

Я согласен, PPT намного ниже других VBA. Прежде всего кажется, что глюка видитСтранная ошибка на PowerPoint VBA

Событие модели неловко, как нет автоматического исполненияКак автоматически запустить инициализацию объекта приложения в PowerPoint?

AUTO_OPEN возможен только в обходе, создав ADDIN, что насчет пользователей, которые получают ваш PPT и не знают, как установить плагин :(

Посмотри это статья Для суммирования, почему VSTO - это путь. Сравняется с VBA для Excel, но то же самое относится и к PowerPoint.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top