- 締切済み
Windows Wordについての質問です
Wordで4種類ほどの名前を入れる表を作りたいのですが、一個ずつ名前を打つのは面倒なのでExcelのようにマクロを使いたいです。 理想としては、ショートカットキーを作成して該当のマスにカーソルを合わせ、そこでショートカットキーを押して入力出来るようにしたいのですが、どのようにしたら良いですか? よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (455/693)
ショートカットとの求めが気になったので補足します。 F1,F2,F3ではなく、例えば Ctrl+A,Ctrl+S,Ctrl+D に割り当てたい場合は 以下です。 Private Sub Document_Open() With Application .CustomizationContext = NormalTemplate .KeyBindings.Add KeyCode:=.BuildKeyCode(wdKeyControl, wdKeyA), _ KeyCategory:=wdKeyCategoryCommand, _ Command:="PutName1" .CustomizationContext = NormalTemplate .KeyBindings.Add KeyCode:=.BuildKeyCode(wdKeyControl, wdKeyS), _ KeyCategory:=wdKeyCategoryCommand, _ Command:="PutName2" .CustomizationContext = NormalTemplate .KeyBindings.Add KeyCode:=.BuildKeyCode(wdKeyControl, wdKeyD), _ KeyCategory:=wdKeyCategoryCommand, _ Command:="PutName3" End With End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
>Excelのようにマクロを使いたいです。 ワードのVBAは書籍も(1995年来)3-4冊しか出版されておらず、現在で入手できるのは1冊程度しかない。WEB記事以外ではそれほど、ワードVBAは独習しにくい分野です。 こんな質問コーナーに1問質問して回答でやれると思うのは安易すぎる。 たとえば、システム会社に勤めていて、依頼案件の中に、一部でワードのVBAでも使わざるを得なくて、研究した人でも、このコーナーを見ておれば、回答が出るかもしれないが。ここは専門家・プロにVBAコードを作ってくれと依頼するコーナーではないはず。 それに質問者は、WEB照会でもしてみたのかな、していないようだ。 ーー そこで、1つの提案として、エクセルの入力援助の諸機能を使って(多分ワードより豊富だろうと思う)、表を作り、ワードへ移すことを考えたらどうだろう。 数表程度ならVBAでやらずとも、手作業でも大したことはないと思うが。 ーー その線で、WEB照会の記事を使わせてもらって、修正してみた。 参考 http://www.shoeisha.com/book/hp/pc/office/Word/files/text6.html テストデータ エクセルで、Sheet1のA1:C5に 名前 住所 年齢 木村三郎 奈良市 34 大野 茂雄 神戸市 45 徳川 勇 和歌山市 27 近藤 茂子 亀山市 29 とテストデータを作る。 ーー その標準モジュールに Sub MakeWordApp2() ' Wordオブジェクトのインスタンスを作成 Set objWord = CreateObject("Word.Application") With objWord ' Wordを表示 .Visible = True ' ウィンドウを最大表示 .WindowState = wdWindowStateMaximize ' Reprot.docを開く .Documents.Open "C:\Users\XXX\Documents\住所録1.docx" 'Reprot.docをオブジェクト変数に代入 Set objWordDoc = .ActiveDocument '文書にテキストを挿入 With .Selection .Move Count:=objWordDoc.Characters.Count .InsertParagraphAfter .InsertAfter "XX同好会名簿" .InsertParagraphAfter .MoveRight End With End With MsgBox "AAA" '--- ' セルのデータをコピSheet1").Range("A1:C10").Copy Worksheets("sheet1").Range("A1:C10").Copy ' Wordに貼り付け With objWord.Selection .Paste .TypeParagraph End With MsgBox "BBB" ' 文書を保存して閉じる objWordDoc.Close SaveChanges:=True ' Wordを終了する objWord.Quit ' オブジェクト変数をクリアする Set objWord = Nothing Set objWordDoc = Nothing End Sub (注)ファイルのPATHの部分は自分の場合に合わせて修正のこと。 シートの表のデータのコピー範囲も修正のこと。 ーー 実行すると、ワードの文書に XX同好会名簿 名前 住所 年齢 木村三郎 奈良市 34 大野 茂雄 神戸市 45 徳川 勇 和歌山市 27 近藤 茂子 亀山市 29 のような表ができる。 ーー このほかの方法として、エクセル表から、ワードの表(事前に作っておいて)にデータを移すコードもWEB照会すれば見つかるだろう。 == こういう質問をする(WordVBAで行うことの)背景・ニーズを補足して置いたらどうだろう。
- HohoPapa
- ベストアンサー率65% (455/693)
F1,F2,F3を押すと、それぞれ、 カーソルの位置に指定した文字列が挿入される。 ということであれば、次のようなコードで実現できると思います。 (個人的には、単語登録でも十分な気がしますが) '====ThisDocumentに配置 Private Sub Document_Open() With Application .CustomizationContext = NormalTemplate .KeyBindings.Add KeyCode:=.BuildKeyCode(wdKeyF1), _ KeyCategory:=wdKeyCategoryCommand, _ Command:="PutName1" .CustomizationContext = NormalTemplate .KeyBindings.Add KeyCode:=.BuildKeyCode(wdKeyF2), _ KeyCategory:=wdKeyCategoryCommand, _ Command:="PutName2" .CustomizationContext = NormalTemplate .KeyBindings.Add KeyCode:=.BuildKeyCode(wdKeyF3), _ KeyCategory:=wdKeyCategoryCommand, _ Command:="PutName3" End With End Sub '====標準モジュールに配置 Sub PutName1() Selection.TypeText Text:="鈴木一郎" End Sub Sub PutName2() Selection.TypeText Text:="山田次郎" End Sub Sub PutName3() Selection.TypeText Text:="田中三郎" End Sub