使用 VBA 创建模板以根据 PPT 中的用户输入创建、添加和格式化文本框到幻灯片

Creating a template to create, add, and format text boxes to a slide based on user input in PPT using VBA

我还有另一个问题,询问使用几个布尔单选按钮提出调查问题背后的逻辑,位于 here。我遇到的最大问题是让文本框填充单独的幻灯片以显示将根据客户的单选按钮输入影响客户的系统。

此 post 尝试找到一种方法来减少创建、放置和格式化文本框所需的代码。下面的代码是我目前所拥有的,但它一直告诉我当我 运行 它时它需要一个“=”。

Public Sub textBox(t As Integer, l As Integer, w As Integer, h As Integer, Sys As String)
Dim myTB As Shape

With ActivePresentation.Slides(7)
   Set myTB = .Shapes.AddTextbox(msoTextOrientationHotizontal, l, t, w, h)
   myTB.TextFrame.TextRange.Text = Sys
   myTB.TextFrame.TextRange.Font.Color.RGB = RGB(255,255,255)
   myTB.TextFrame.TextRange.Font.Size = 20
End With

End Sub

我想我声明变量的逻辑可能有误。我想要做的只是将 textBox(200,300,200,25, "ERP Name") 放入我的 If Then 或 Case 语句中以格式化框。有更好的方法吗?

您需要使用

CALL textBox(parm, parm, ... , parm) 

或省略括号。

要清除所有内容,这里是一个起点:

Sub ClearTheField()

Dim oSl As Slide
Dim oSh As Shape

For Each oSl In ActivePresentation.Slides
    For Each oSh In oSl.Shapes
        If oSh.Type = msoOLEControlObject Then
            If Left$(oSh.OLEFormat.Object.Name, Len("TextBox")) = "TextBox" Then
                oSh.OLEFormat.Object.Text = ""
            End If
            If Left$(oSh.OLEFormat.Object.Name, Len("CheckBox")) = "CheckBox" Then
                oSh.OLEFormat.Object.Value = False
            End If
            If Left$(oSh.OLEFormat.Object.Name, Len("CommandButton")) = "CommandButton" Then
                oSh.OLEFormat.Object.Caption = "I changed too"
            End If

        End If
    Next
Next

End Sub