
[要望概要]
Word文書のマクロ機能を用いて、文書中の特定の個所に必須入力項目を設けたいのですが、どのようにマクロを記述すれば良いのか分かりません。
[要望詳細]
特定個所(例えば、「名前:_____」と言う欄の下線部分)に何かが入力されていなければ、文書の保存が出来ないようにしたい。
あるいは、Word起動時にマクロで必須入力個所の入力を促し、入力を行なわなければいかなる操作も受け付けないようにしたい。
(完全に上記機能を実現できなくとも、類似機能があれば教えていただきたい)
かなり調べたのですがどうしても分からず、ここで質問させていただきました。
ご存知の方がいらっしゃいましたらお手数ですが教えていただけますでしょうか。
よろしくお願いいたします。
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
なお、マクロの知識がある人はマクロ内のブック保護パスワードが見れますので、プロジェクトの非表示・ロックとパスワード保護が必要です。
ご回答頂きありがとう御座います。
大変ご丁寧にご説明頂きまして大感謝です。
TTakさんの方法で実際に文章を作って検証してみたいと思います。
ここまでご回答頂いた皆様も含めまして、本当にありがとう御座いました。
皆様から教えて頂いた方法を活用させていただきます。
質問のほうはここで一度締めさせていただきます。
No.3
- 回答日時:
こんばんは。
あれから少し考えてみたのですが,なかなか良いアイデアが思いつきません。というより,「何かが入力されていなければ」という条件では,例えばスペースを1個入力しても「入力された」とみなされ,処理が続いてしまうような気がします。それでは意味がないですよね。
例えば,(実際にできるかどうか実験したわけではないのですけど)マクロで実行させ最後に特定の文字列を追加するとか,フォントのサイズや種類をぱっと見た目にはわからないようにマクロで変更するとかいう方法をとれば,マクロを無効にしたときとは結果が異なります。
Excelで入力させて後で差込印刷で印刷する,とかいうような方法もあるかもしれません。
でもいずれの方法でも,入力者がいい加減な情報を入力しても判別できないので,やっぱりチェックは人が行なったほうがいいのかな,と思いました。
ご回答ありがとう御座います。
入力内容のチェックに関しましては、確かにスペース1つでも意味不明な文章でも入力されたものとしてパスしてしまいます。しかしながらその点は入力者の責任できちんと入力させる運用を取らせるつもりでいます。(つまり、必ず入力しなければいけない項目を入力者に伝える&入力誘導させる機能があれば良いのであって、入力内容まではチェックできなくても問題ない)
、、と言うところであります。
やはり現実的な方法は、Word起動直後にマクロで各必須入力項目の入力を促すポップアップウインドウ(テキスト入力エリア付き)を表示し、そこに何かを入力してOKボタンをクリックしなければ先に進めないものとするのが一番手っ取り早く、入力漏れも無くできるのかなと思っております。
もし他にも何か良い案をお持ちの方がいらっしゃいましたらご指南よろしくお願いします。
コメントなども歓迎です。
No.2
- 回答日時:
ちょっと質問の内容とは違うのですが,記入漏れをさせたくない,という場合,このような方法もあります。
(1) メニューの「表示」→「ツールバー」→「フォーム」をチェックして「フォームツールバー」表示させる。
(2) 普通に文書を作成し,名前など,入力してもらいたいところで「ab」というアイコンをクリックして,「テキストボックスフォームフィールド」を挿入する
(3) 挿入したフィールドをダブルクリックして,最初に表示させたい文字列等を設定する。
(4) 文書ができたら,「フォームツールバー」の鍵のアイコンをクリックすれば,灰色(テキストボックスフォームフィールド)以外のところが変更できなくなります。
(5) メニューの「ツール」→「文書の保護」で,「フォームフィールド」を保護の対象外にして文書を保護すれば,それ以外のところが勝手に書き換えられるのを防ぐことができます。
この方法だと,入力しないといけないところが灰色で表示されているので,見落としが少ないです(灰色そのものは印刷されません)。ただし,未入力でも保存などはできてしまいます。マクロで専用の入力フォームとかを作ってもいいかもしれませんが,基本的にマクロは無効にできるのでユーザーに変更できないようにするのは難しいかもしれません。
ご回答いただき有難う御座います。ご指南いただいた方法を用いますと、定型部分の勝手な変更を許さないように設定できると言うことですね?早速試してみたところ大変有用であると実感しました。
ただ今回は最も重要な要件が「必須入力項目の入力チェック」ですので、まずはそちらの機能の充足を優先させたいと考えております。
しかしながらtokpy様に教えていただいた方法も合わせて定型文書を作成したいと考えます。この度は大変貴重な情報を有難うございました。
この質問に対してのご回答を引き続き募集しております。
何卒よろしくお願いいたします。
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
のような感じで起動時に記入を促せました。
ただ、マクロ無効で開かれちゃったり、この後に記入箇所を消されたら終りですけど。
ご回答いただき大変有難う御座います。
早速テストしてみたいと思います。
マクロ無効で開かれるとマクロは全く意味を持ちませんが、各クライアント端末のWordの設定にてマクロを必ず実行するようにして立ち上げるようにしたいと思います。
(と言っても、その設定もユーザーに変えられてしまったら意味が無いのですが・・・)
引き続き、妙案をお持ちの方がいらっしゃいましたらご指南お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- 賃貸マンション・賃貸アパート 賃貸:24時間緊急駆け付けサポートの加入必須?更新時の相談 3 2022/09/08 14:51
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- その他(パソコン・周辺機器) WINDOWS11 IMEの日本語入力で困っています 4 2023/04/29 19:24
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- その他(Microsoft Office) Excel、Wordのファイル 3 2023/05/07 04:58
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
- Excel(エクセル) Excelで漢字人名が勝手に並び変わる(続) 4 2023/03/21 21:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2010マクロ メッセージ...
-
(実行時エラー5852)Excelデータ...
-
Word文書に必須入力項目を設けたい
-
エクセルのマクロセキュリティ...
-
Excel2003 GET.CELL関数を使う...
-
エクセルーマクロ削除後 メッ...
-
Microsoft Word(β版)のエラー
-
Office2007 マクロの警告を表示...
-
CtrlCができません。
-
Excelのマクロのショートカット...
-
ワードで全てのキーにマクロ割...
-
ワードを立ち上げると画面が小...
-
WordとExcelのソフトが見つか...
-
excelからwordへのデータの吸い...
-
よくパソコンのMs officeに似せ...
-
wordの差し込み印刷で困ってい...
-
Photoshopの件
-
「コマンドライン引数に実行フ...
-
WordやExcelで筆記体...
-
マイクロソフト オフィスを安...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(実行時エラー5852)Excelデータ...
-
Word文書に必須入力項目を設けたい
-
Access2010マクロ メッセージ...
-
Excelのマクロは管理者でないと...
-
Excelのシートを印刷不可(禁止...
-
KingsoftのOffice2013でExcelの...
-
Excel2003 GET.CELL関数を使う...
-
VBAを禁止している会社って...
-
PERSONAL..XLSを削...
-
マクロのアイコンを消したい
-
ワードを起動した時にでる「セ...
-
今まで実行できていたマクロが...
-
ワードを開くたびに「このプロ...
-
Excelで追加した右クリックメニ...
-
ワードのマクロで、蛍光ペンの...
-
wordで改ページごとにそれぞれ...
-
Word2013: コピー、切り取り、...
-
秀丸について教えてください
-
「セキュリティレベルが高」の...
-
EXCELのマクロについて
おすすめ情報