こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Windows Wordについての質問です

Wordで4種類ほどの名前を入れる表を作りたいのですが、一個ずつ名前を打つのは面倒なのでExcelのようにマクロを使いたいです。

理想としては、ショートカットキーを作成して該当のマスにカーソルを合わせ、そこでショートカットキーを押して入力出来るようにしたいのですが、どのようにしたら良いですか?

よろしくお願いいたします。

投稿日時 - 2018-08-14 22:05:05

QNo.9527527

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

ショートカットとの求めが気になったので補足します。

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

投稿日時 - 2018-08-15 11:12:45

ANo.2

>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で行うことの)背景・ニーズを補足して置いたらどうだろう。

投稿日時 - 2018-08-15 10:27:02

ANo.1

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

投稿日時 - 2018-08-15 09:49:04

あなたにオススメの質問