• ベストアンサー

Word文書に必須入力項目を設けたい

[要望概要] Word文書のマクロ機能を用いて、文書中の特定の個所に必須入力項目を設けたいのですが、どのようにマクロを記述すれば良いのか分かりません。 [要望詳細] 特定個所(例えば、「名前:_____」と言う欄の下線部分)に何かが入力されていなければ、文書の保存が出来ないようにしたい。 あるいは、Word起動時にマクロで必須入力個所の入力を促し、入力を行なわなければいかなる操作も受け付けないようにしたい。 (完全に上記機能を実現できなくとも、類似機能があれば教えていただきたい) かなり調べたのですがどうしても分からず、ここで質問させていただきました。 ご存知の方がいらっしゃいましたらお手数ですが教えていただけますでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.4

私がよく使う手法ですが、パスワード付きでブック保護したまま保存しておき、マクロでブック保護を解除するようにすれば、マクロを無効にして立ち上げた時は自動的に文書の改編ができません。また、文書中の決められた行(たとえば1行目)に「マクロを有効にして起動してください」などと記述しておけば、マクロを無効にしている時のメッセージの代わりになります。マクロが有効の場合は、マクロを使ってその行の記述を削除すれば良いですね。 次の例は文書を開く時に一行目に氏名を入力するマクロです。新規文書の1行目に「マクロを有効にして起動してください」と記述して、ブック保護(パスワード"aaa")として、次のマクロ(Document_Openイベントプロシージャ)を記述して保存します。 最初に文書を開くとき氏名入力を催すInputBoxが表示され、InputBoxが空欄でなければ、Unprotectメソッドでブック保護を解除して、InputBoxに入力された内容が文書の1行目を書き換えます。文書の1行目にはあらかじめ「マクロを有効にして起動してください」と記述してたので、もしマクロを無効にして立ち上げた場合はこの表記が残り、ブック保護も継続されます。 Private Sub Document_Open() Dim myName On Error GoTo ERRHAND With ActiveDocument   .Unprotect Password:="aaa"   If .Paragraphs(1).Range Like "氏名 : " & "*" = True Then Exit Sub   .Protect Password:="aaa", NoReset:=False, Type:= _    wdAllowOnlyFormFields   myName = InputBox("氏名を入力してください" & Chr(13) _    & "記入されなかった場合は文章の編集ができません")   If myName = "" Then Exit Sub   .Unprotect Password:="xxx"   With .Paragraphs(1).Range     .Delete     .InsertBefore "氏名 : " & myName   End With  End With Exit Sub '以下エラー処理 ERRHAND: End Sub なお、マクロの知識がある人はマクロ内のブック保護パスワードが見れますので、プロジェクトの非表示・ロックとパスワード保護が必要です。

zainsyou
質問者

お礼

ご回答頂きありがとう御座います。 大変ご丁寧にご説明頂きまして大感謝です。 TTakさんの方法で実際に文章を作って検証してみたいと思います。 ここまでご回答頂いた皆様も含めまして、本当にありがとう御座いました。 皆様から教えて頂いた方法を活用させていただきます。 質問のほうはここで一度締めさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.3

こんばんは。あれから少し考えてみたのですが,なかなか良いアイデアが思いつきません。 というより,「何かが入力されていなければ」という条件では,例えばスペースを1個入力しても「入力された」とみなされ,処理が続いてしまうような気がします。それでは意味がないですよね。 例えば,(実際にできるかどうか実験したわけではないのですけど)マクロで実行させ最後に特定の文字列を追加するとか,フォントのサイズや種類をぱっと見た目にはわからないようにマクロで変更するとかいう方法をとれば,マクロを無効にしたときとは結果が異なります。 Excelで入力させて後で差込印刷で印刷する,とかいうような方法もあるかもしれません。 でもいずれの方法でも,入力者がいい加減な情報を入力しても判別できないので,やっぱりチェックは人が行なったほうがいいのかな,と思いました。

zainsyou
質問者

お礼

ご回答ありがとう御座います。 入力内容のチェックに関しましては、確かにスペース1つでも意味不明な文章でも入力されたものとしてパスしてしまいます。しかしながらその点は入力者の責任できちんと入力させる運用を取らせるつもりでいます。(つまり、必ず入力しなければいけない項目を入力者に伝える&入力誘導させる機能があれば良いのであって、入力内容まではチェックできなくても問題ない) 、、と言うところであります。 やはり現実的な方法は、Word起動直後にマクロで各必須入力項目の入力を促すポップアップウインドウ(テキスト入力エリア付き)を表示し、そこに何かを入力してOKボタンをクリックしなければ先に進めないものとするのが一番手っ取り早く、入力漏れも無くできるのかなと思っております。 もし他にも何か良い案をお持ちの方がいらっしゃいましたらご指南よろしくお願いします。 コメントなども歓迎です。

全文を見る
すると、全ての回答が全文表示されます。
  • tokpy
  • ベストアンサー率47% (1313/2783)
回答No.2

ちょっと質問の内容とは違うのですが,記入漏れをさせたくない,という場合,このような方法もあります。 (1) メニューの「表示」→「ツールバー」→「フォーム」をチェックして「フォームツールバー」表示させる。 (2) 普通に文書を作成し,名前など,入力してもらいたいところで「ab」というアイコンをクリックして,「テキストボックスフォームフィールド」を挿入する (3) 挿入したフィールドをダブルクリックして,最初に表示させたい文字列等を設定する。 (4) 文書ができたら,「フォームツールバー」の鍵のアイコンをクリックすれば,灰色(テキストボックスフォームフィールド)以外のところが変更できなくなります。 (5) メニューの「ツール」→「文書の保護」で,「フォームフィールド」を保護の対象外にして文書を保護すれば,それ以外のところが勝手に書き換えられるのを防ぐことができます。 この方法だと,入力しないといけないところが灰色で表示されているので,見落としが少ないです(灰色そのものは印刷されません)。ただし,未入力でも保存などはできてしまいます。マクロで専用の入力フォームとかを作ってもいいかもしれませんが,基本的にマクロは無効にできるのでユーザーに変更できないようにするのは難しいかもしれません。

zainsyou
質問者

お礼

ご回答いただき有難う御座います。ご指南いただいた方法を用いますと、定型部分の勝手な変更を許さないように設定できると言うことですね?早速試してみたところ大変有用であると実感しました。 ただ今回は最も重要な要件が「必須入力項目の入力チェック」ですので、まずはそちらの機能の充足を優先させたいと考えております。 しかしながらtokpy様に教えていただいた方法も合わせて定型文書を作成したいと考えます。この度は大変貴重な情報を有難うございました。 この質問に対してのご回答を引き続き募集しております。 何卒よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

Wordのマクロについては殆ど解りませんが、Project(文書名)の ThisDocument に Private Sub Document_Open() Dim uName  uName = InputBox("まず氏名を入力", "制限")  If uName = "" Then    MsgBox "閉じます", vbCritical    ThisDocument.Close  End If  Selection.TypeText Text:=uName End Sub のような感じで起動時に記入を促せました。 ただ、マクロ無効で開かれちゃったり、この後に記入箇所を消されたら終りですけど。

zainsyou
質問者

お礼

ご回答いただき大変有難う御座います。 早速テストしてみたいと思います。 マクロ無効で開かれるとマクロは全く意味を持ちませんが、各クライアント端末のWordの設定にてマクロを必ず実行するようにして立ち上げるようにしたいと思います。 (と言っても、その設定もユーザーに変えられてしまったら意味が無いのですが・・・) 引き続き、妙案をお持ちの方がいらっしゃいましたらご指南お願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • word/excelで入力必須の項目を作れますか?

    こんにちは。 wordまたはexcelでアンケートフォームを作成したいと思います。 その中で、入力必須の項目を作りたいと思います。 「名前」「住所」等、必須項目を入力しないと保存できないような 機能をご存知でしょうか? 宜しくお願いします。

  • エクセル2000からワード文書を開くマクロの記述

    エクセルのデータベースからマクロでワードの差込印刷をしたいのですが、エクセル中で特定のワード文書を開く記述はどのようにすればいいのでしょうか。至急教えてください!

  • 人からもらったワード文書を編集しようとしています。

    人からもらったワード文書を編集しようとしています。 が、字を入力しようとすると下線付き青字で出てしまいます。 どういう設定になっているのか、ワード文書をくれたヒトに聞ければイイのですが、聞けないらしいです。 検索はしてみたのですが見つかりません…普通に黒字下線なしで入力出来るように直す方法、分かる方いらっしゃれば教えて頂けないでしょうか。

  • Word2007文書内の特定の部分だけを編集させたくない

    Word2007文書内の特定の部分だけを編集させたくない Word2007を使用しています。 Word2007で作成した文書のタイトルなど、 特定の部分だけを編集させたくないと思っております。 逆に言えば、特定の部分だけを編集可能にしたいと思っております。 Wordの機能で何とか実現できないだろうか? と調査しているのですが、良い方法を見付けることができませんでした。 もしご存知でしたら、教えて頂けませんか? ぜひよろしくお願い致します。

  • ワードの入力について、

    MSワードの申込書がメールで送られてきましたが、 見出し2で氏名、住所など記入箇所に下線が 引かれています。 そこへ、入力すると入力文字の部分の下線が消えて しまいます、また、入力文字の後の下線も消えたりも しますが、下線の上に文字を入力するには、どうしたら 良いのでしょうか? よろしくお願い致します。

  • Word文書の起動と入力が遅い

    Word文書の起動と入力がとても遅くて困っています。 やっと立ち上がっても、何か操作するとすぐ砂時計になりしばらくするとNot Respondingとフリーズして強制終了を余儀なくされます。 特定の文書でなく全てのWord文書に起こります。 ちなみにPC、インターネット、ワードパット、メモ帳、Excel他のアプリケーションのスピードはいたって正常です。

  • ワードのハイパーリンクで同一文書の下の部分に飛ばしたい

    ワード文書をもとにHPを作成しております。 文章に貼っているハイパーリンクを クリックすると同一文書の下にある 特定の箇所に移動させたいと思っていますが、 どうすればいいのでしょうか? (あとこの機能は「アンカー機能」と 呼ぶのでしょうか?) ご存知の方よろしくお願いします。

  • 文書の太線・下線ごと、そのままワード文書に差し込みできますか?

    例えば、様式の違う書類が2枚(様式Aと様式B)があるとします。 様式Aも様式Bも表示の仕方は違いますが、内容は同じです。 様式A(もしくは様式B)に入力すると、もう一方の様式の同じ項目にも文書を入力されるようしたいのです(ワードでもエクセルでもどちらでもOKです) 私はワードで両書式を作成し、差し込み印刷ウィザード機能を使って(例えば様式Bに様式Aのデータを)差し込んでみたのですが、様式Aに入力したデータ(文書)の一部を下線や取り消し線・太字にした場合、様式Bにも反映させたいのですが反映しません(下線・取り消し線は表示されず、文字も太字になっていません)。 下線や取り消し線などは、差し込むこと(またはエクセルだとリンク貼り付けをする)はできないのでしょうか? 長文なうえ、わかりづらい文章でごめんなさい(T-T)どうぞよろしくお願いします

  • ワード2002で文書の一部を保護したい

    FAX送信状、依頼書などの項目の欄を選択できず、 新しく入力するところだけ選択編集できる文書があります。 どのようにしたらそのようにできるのでしょうか? エクセルではロックしたいところのセルを保護するにチェックを すれば一部の保護はできますが、ワードにもその様な機能は あると思いますがどうやるのでしょうか?

  • ワード2003で文書の一部を保護

    FAX送信状、依頼書などの項目の欄を選択できず、 新しく入力するところだけ選択編集できる文書があります。 どのようにしたらそのようにできるのでしょうか? エクセルではロックしたいところのセルを保護するにチェックを すれば一部の保護はできますが、ワードにもその様な機能は あると思いますがどうやるのでしょうか?

専門家に質問してみよう