2012-04-24 11 views
2

私はPowerpointを使用してクイズの種類を作成しようとしています。ユーザーが入力した内容を保存したいと思います。一般的なPowerpoint開発者コントロールVBAでの値の保存

たとえば、次のように質問します。お気に入りの色は何ですか?質問に答えて次のボタンをクリックすると、テキストボックスの値を保存して出力ファイルに追加したいと思います。

私はすでに値を取得し、その値をファイルに書き込む方法を知っています。

私が探しているのは、ループのようなものです。ここで

は擬似コードです:

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

この方法では、関係なく、フォーム上にあるものを制御し、Iはそれぞれ、すべてのコントロールの値を保存したいん。

これはVBAでも可能ですか?そうでない場合は、このような状況に対応する汎用ソリューションはありますか?

+2

青。いいえ! Yel--オーフーウウウフ! –

+0

@ Jean-FrançoisCorbett:LOL –

答えて

2

ここでwは、スライド上の各コントロールをチェックするより一般的な方法です/ oあらかじめ何人いるか知っている。これは、シェイプを制御するために割り当てられたデフォルトの名前(TextBox1、CheckBox1など)を保持していることを前提としています。それらを変更したい場合は、各TextBoxに固有の文字列が少なくとも1ビット含まれていることを確認し、それに応じてコードを変更する必要があります。 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 
+0

申し訳ありませんが、問題が発生しているようです。 Powerpoint Developerタブで提供されるデフォルトのコントロールを使用しています。これらはすべてActiveXコントロールであり、12ではなく1のタイプのようです。このコードをActiveXコントロールに適合させることはできますか? –

+0

シェイプをループしているときに、各シェイプの名前を表示すると、コントロールの名前ではなく「Rectangle 1-5」のようなものが表示されます。 –

+0

問題がない、修正を見つけました。プロセススライド1(1)はスライド1でのみ実行されます。これをCURRENTスライドで実行するにはどうすればよいですか? –

1

はVBAで、このことは可能ですか?

は、はい、それは1つのテキストボックスと2つのコマンドボタンを配置し、プレゼンテーションに

:)です。プレゼンテーションはこのようになります。 VBAエディタで

enter image description here

このコード

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 

を貼り付け、あなたがそれを実行し、「次へ」をクリックしたときに今、データは自動的にテキストファイルに保存されます。

enter image description here

そして、これはあなたのテキストファイルがどのように見えるかです...

enter image description here

HTH

関連する問題