2

我正在寻找使用 Powerpoint 创建一种测验,我想保存用户提供的输入。

例如:如果我问这个问题:你最喜欢什么颜色?当他们回答问题并单击下一步按钮时,我想保存文本框的值并将其附加到输出文件中。

我已经知道如何获取值并将值写入文件。

我想做的是一种循环。

这是伪代码:

foreach(Control c in CurrentSlide.Controls)
{
     File.Append(c.Value);
}

这样,无论表单上有什么控件,我都想保存每个控件的值。

这在VBA中可能吗?如果没有,您有针对这种情况的通用解决方案吗?

4

2 回答 2

2

这是检查幻灯片上每个控件的更通用的方法,无需事先知道会有多少。这假定您保留了分配给控件形状的默认名称(TextBox1、CheckBox1 等)。如果您想更改这些,您需要确保每个 TextBox 的名称至少包含一个唯一的字符串,并相应地更改代码。Siddarth 已经提供了用于写入文件的代码,并且您说您可以控制它,所以我只是 Debug.Printing 此处的值以保持示例简单。

Sub TestIt()
    ' Run this to test the shapes on slide 1
    ProcessTheSlide ActivePresentation.Slides(1)
End Sub

Sub ProcessTheSlide(oSl As Slide)

    Dim oSh As Shape

    For Each oSh In oSl.Shapes
        ' Is it a control?
        If oSh.Type = 12 Then  ' msoOLEControlObject
            On Error Resume Next
            With oSh.OLEFormat.Object
                If InStr(.Name, "TextBox") > 0 Then
                    Debug.Print .Text
                End If
                If InStr(.Name, "CheckBox") > 0 Then
                    Debug.Print .Value
                End If

            End With
        End If
    Next

End Sub
于 2012-04-24T14:53:34.547 回答
1

这在VBA中可能吗?

是的 :)

在您的演示文稿中,放置 1 个文本框和两个命令按钮。您的演示文稿应如下所示。

在此处输入图像描述

在 VBA 编辑器中粘贴此代码

Option Explicit

'~~> Save data to file
Private Sub CommandButton1_Click()
    Dim filesize As Integer
    Dim FlName As String

    '~~> text File where you want to save the data
    FlName = "C:\Sample.Txt"

    '~~> Get a free file handle
    filesize = FreeFile()

    '~~> Open your file
    Open FlName For Append As #filesize

    '~~> Export Text
    Print #filesize, TextBox1.Text
    Close #filesize

    TextBox1.Text = ""
End Sub

'~~> Exit Show
Private Sub CommandButton2_Click()
    SlideShowWindows(1).View.Exit
End Sub

现在,当您运行它并单击“下一步”时,数据将自动保存在文本文件中。

在此处输入图像描述

这就是您的文本文件的外观...

在此处输入图像描述

高温高压

于 2012-04-24T07:09:39.740 回答