使用 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
我还有另一个问题,询问使用几个布尔单选按钮提出调查问题背后的逻辑,位于 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