私はvbaが初めてで、ユーザーにコンボボックスリストから可変数の値を選択するように求めるドキュメントを開発しています。値を選択したら、ドキュメント自体にテキストフォームフィールドとして順番に挿入したいと思います。私が一般的にそれを機能させようとしている方法をお見せしましょう。
まず、ユーザーは値を選択します。
[a]
[b]
[c]
そして「OK」ボタンを選択する。次に、これらの選択した値をブックマークから始まる単語文書に追加しようとしています。値 "a" を挿入し、その後に空白文字、空白のテキスト フォーム フィールド、2 つのキャリッジ リターンを挿入する必要があります。最終的に、結果は次のようになります。
[bookmark]
[a]'_'[blank_a]'^p'
'^p'
[b]'_'[blank_b]'^p'
'^p'
[c]'_'[blank_c]'^p'
'^p'
[ブックマーク] は非表示のブックマーク、'_' はスペース、'^p' はキャリッジ リターンです。現在、私のコードは次のとおりです。
Dim myRange As Range
Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Bookmarks("START").Range.Start, _
End:=ActiveDocument.Bookmarks("END").Range.End)
For i = 1 To NUMBER_OF_RESPONSES
Selection.FormFields.Add(myRange, wdFieldFormTextInput).Name = "question_" & i
Selection.FormFields.Add(myRange, wdFieldFormTextInput).Result = "response_" & i
Next i
当然のことながら、私はそれを行う方法を理解していないので、まだリテラル スペースやキャリッジ リターンの挿入はありません。このコードの結果は次のとおりです。
[START][blank_c][c][blank_b][b][blank_a][a][END]
この順序を逆にして、前述のフォーマットが挿入されるようにしたいと思います。それを行う方法についての指針はありますか?