wasabi8888さん、遅くなりました。
>Sub 氏名のコピー()
>'
>' 氏名のコピー Macro
>' 記録日 2004/12/25 記録者 ×××
というマクロを手直しすることを考えました。ご期待に沿えるものかは分かりませんが、コードを考えてみました。
リンクというのがふさわしいか分かりませんが、
「Selection.GoTo What:=wdGoToBookmark, Name:="氏名"」
飛ばなくなってしまったのですね。それは、最初に、挿入のブックマークを確認してみてください。ブックマーク名はなくなることがありますね。そのままで飛ぶはずですが、理由はわかりません。
本来は、そのSelection を、ドキュメント名に替えて、例: Documents("アンケート用紙.doc").Goto などとしていれば、問題はないのかとは思いますが。
>もともとの文書テンプレートのシート上に、マクロを実行するボタン
>("氏名をコピーする"など)を配置し、ボタンを押すたびに、
>フォームフィールドに記載されたテキストを、ひとつづつコピーできるようにしています。
つまり、Copy をして、ジャンプして Ctr+V で貼り付けていたのではないかと、読めました。
>テンプレート文書は、
>前半がアンケート入力のための説明文およびフォームフィールドが並んでおり、後半がデータベース運営者のために、コピー機能を組み込んだ(はずの...)ボタンが並んでおります。
以下なら、ボタンひとつで、全部を集計します。フォーム・フィールドに何か入れていただくだけでよいです。もちろん、アンケートする側は、マクロを使う必要はまったくありませんね。マクロは、表には見せないようにするのもよいかもしれません。もっともっと発展性はあるけれども、今は、このぐらいにしておきます。
また、自分のOfficeの登録名をキーワードにして、マクロが実行できないようにすることも可能ですね。
プロシージャーの最初に、このようなコードを置いておきます。
Sub 氏名のコピー2()
Dim ....
Dim ....
If Application.UserName <> "Wendy02" Then Exit Sub
'登録名でなかったら、マクロは中止
'---------------------------------------------------------------
Sub 氏名のコピー2()
Dim myField() As Variant
Dim ff As Object, i As Long
i = 1 'インデックスの初期値(Item と連動させるため)
If ActiveDocument.Name <> ThisDocument.Name Then
MsgBox "アンケート用のファイルをアクティブにしてください", vbCritical
Exit Sub
End If
'フィールドをひとつずつピックアップ
For Each ff In ActiveDocument.FormFields
ReDim Preserve myField(i)
myField(i) = ActiveDocument.FormFields(i).Result
i = i + 1
Next ff
With ActiveDocument.Bookmarks
'↓アンケート用紙の並びが狂ったりしなければ、要らないはずです。
'.DefaultSorting = wdSortByName
.ShowHidden = False
On Error Resume Next
'↓ここにフィールド順に、ブックマーク名を書き足していきます。※
'-----------------------------------------------------------
.Item("氏名").Range = myField(1)
.Item("管理者用_氏名").Range = myField(2)
'-----------------------------------------------------------
On Error Goto 0
End With
MsgBox "終了"
End Sub
'---------------------------------------------------------------
※もし、失敗するようだったら、
フィールド名を、Text1 とか、Check1 とか、実際にある名前を入れてください。
.Item("氏名").Range = ActiveDocument.FormFields("Text1").Result
お礼
Wendy02さん、度重なるご尽力、ありがとうございます。 頂いたソースで問題解決することが出来ました。 大変助かりました。 ありがとうございます。