「効率の良さ」という価値に対してもっと具体的な対価がほしい(雑記-18)
効率良く仕事をこなす人っていうのは周りに評価されにくい場合があります。
例えば同じ仕事を
- Aさんは、周囲の助言がなくても半日でこなせる
- Bさんは、周囲に知恵を借りまくり、さらに残業し、3日間かけてこなす
出来上がった成果が同じであれば、単純にAさんのほうが能力が高いと言えるでしょう。
でも、これは上記の事情を知っている者が下した評価です。
問題なのは、事情をまったく知らない第三者が、AさんとBさんを見た場合にどう思うかです。
ある日、Bさんが ひぃひぃ 言いながら書類の山と格闘をしている。傍ら、Aさんは涼しい顔で定時帰宅する・・・・・・・。
注意深く見ている人じゃなければ、ぱっと見、Bさんのほうが仕事をしている風に見えますね。
- Aさんは仕事を効率良くこなすために、人知れず創意工夫を重ねています。
- Bさんは行き当たりばったりで漫然と仕事をしています(ガッツはあります)。
問題なのは、そんな事情は第三者は知る由もないということ・・・・・・。
その第三者の中に人事考課者がいたらもっと厄介です。
AさんはAさんで、「人知れず」というところを「人に知れるように(考えた効率的方法を拡散するなどして)」すればいいのですが、Aさんは「人知れずやることの何が悪い?」という始末。
そんな言い方もあり、成果と評価が反比例しそうな勢い。
うーん・・・・・・、仕事はできるが処世術に長けていないAさんはどうすればいいんでしょうか?
余った時間で、Bさんを助けてあげればいいじゃない?
確かに!
それならば、Aさんの評価もウナギ登りです。
でも、それでAさんとBさんがもし同じ給料だったら?その内、やる気がなくなってしまうでしょう。
私はAさんのような(人知れず創意工夫を重ねているような)人が埋没しないように、効率的に仕事ができることなどの価値に対してもっと具体的に対価を支払う仕組みがほしいと思っています。
- IF(成果 ÷ 時間 > 1, 成果÷時間 , 0) × 手当てa + (同僚を補佐した時間 × 手当てb)
- ※IF(論理式,真の場合,偽の場合)
とか・・・・・・。
これは、月単位での給料への上乗せ希望の妄想であります。
成果が同じで、時間外手当てが少ないAさんと、時間外手当てが大きいBさんでは不公平でしょう?
人の評価っていうのは複雑で数値化しづらいもの・・・・・・。
完全に数値化しようとすると、数値だけでは測れない要素が欠落していびつになってしまいます。
だからといって、数値以外のもので評価しようとすれば、雰囲気やぱっと見、好き・嫌いなどの 主観の混じった評価 が加わる恐れもあります。
媚を売って出世する とはよく言ったもので
そういうものが、(人知れず努力をしているような)価値ある人を埋没させているような気がしてならない今日この頃です。
Windows1.0で遊んでみた(雑記-17)
ブラウザ上で Windows1.0 が動作するエミュレーターがあるようなので遊んでみます!
↓こちら「Virtual x86」というページ
上記にアクセスするとエミュレート可能な OS の一覧が表示されます。
Windows1.0の他に Windows95、Windows98、FreeBSD10.2、Linux2.6・・・・・・等もあり、クリックすると OS がブラウザ上でエミュレートされます。(今回は Windows1.0 をクリック!)
最初にファイルマネージャ(今でいうエクスプローラ)が起動しました。
アイコンが無いシンプルな表示です。
「ABC.TXT」という謎のファイルをダブルクリックしてみましょう。
ふむふむ・・・・・・、this is the contents of the file abc.txt(訳:これはファイルabc.txtの内容です)
ふむふむ。要するにこれは「テキストファイル」で、開いているプログラムは「メモ帳」ですね。
次に、ペイントを起動して落書きでもしてみようかと思います。
ペン・消しゴム・塗りつぶし・図形・テキストの挿入など基本的なことが一通りできます。
ちなみに、画面下の緑色の部分はデスクトップで、左下にプログラムマネージャー、メモ帳が最小化された状態になっています。(1.0から3.Xまでは、デスクトップがタスクバーの役割をしていた)
すべて最小化するとこんな感じ。
逆に、起動中のプログラムをすべて並べてみます。
ちゃんと Windows になっています。
さて、ファイルマネージャーに戻ります。
ディレクトリを新規作成するには、
- Special → Create Directory
ディレクトリを移動するには、
- Special → Change Directory
を選択します。しかし、これをやろうとするとフリーズしてしまいました。
ファイルマネージャーを 閉じると、MS-DOS に戻ります。OS はあくまでも MS-DOS であり、Windows は MS-DOS にGUI環境を付加するアプリケーションの一種でした。
MS-DOS上で WIN.COM と入力すると、再び Windows が起動します。(最初の起動時は AUTOEXEC.BAT から WIN.COM が自動実行されていた)
AUTOEXEC.BATの中身
最後に、Windows1.0 が登場して以来の歴史をざっくりとまとめて締めます。
年 | 製品名 | bit | 備考 |
---|---|---|---|
1985 | Windows 1.01 | 16bit | MS-DOSにGUI環境を付加するアプリケーションという位置づけで誕生(以降 3.Xまで) |
1987 | Windows 2.03 | 16bit | |
1990 | Windows 3.0 | 16bit | |
1992 | Windows 3.1 | 16bit | 日本で初めて普及したWindows |
1993 | Windows NT 3.1 | 32bit | |
1995 | Windows 95 | 32bit | 世界的に大ヒットし、以降、PCとインターネットが加速的に普及する |
1998 | Windows 98 | 32bit | |
1999 | Windows 98 SE | 32bit | |
2000 | Windows 2000 | 32bit | |
2000 | Windows Me | 32bit | |
2001 | Windows XP | 32bit | 32bitカーネルに一本化し、個人向け・企業向けの流れも一本化された |
2003 | Windows XP 64bit版 | 64bit | |
2007 | Windows Vista | 32bit | Meと共に黒歴史と呼ばれているそうな |
2009 | Windows 7 | 32bit | |
2012 | Windows 8 | 64bit | |
2013 | Windows 8.1 | 64bit | |
2015 | Windows 10 | 64bit | 最終バージョンと謳われているらしい |
使うほど時短になる! 愛用フリーソフトを晒すだけの巻(雑記-16)
今回は下記のようなPC操作を楽チンにしてくれるフリーソフトを3つ紹介します。
- 別ウィンドウの必要な箇所を見ながらアクティブウィンドウで作業する
- 最近コピーした文章や定型文を再利用(ペースト)する
- 目的のフォルダに簡単にアクセスする
似たような機能のものはいくつかありますが、インストール不要で使える・操作性が良い・何となくアイコンが好み(?)という観点で勝手に選出しました。
上記のような操作をたくさん行う人ほど、月間や年間での累積時短効果は大きくなります。そして何より、仕事がストレスなくこなせるようになりますヽ(‘ ∇‘ )ノ
既に知名度が高いものばかりかもしれませんが、もし、まだ使ったことがないという人がいたらぜひ使ってみて下さいね。
ソフトを起動した後、画面内でドラッグした範囲をキャプチャすることができます。キャプチャした範囲は 常に最前面に表示 されるため、別ウィンドウでキャプチャした範囲を参照しながら作業することができます。
これまで、データを参照するために印刷したり、ウィンドウを上下・左右に並べて作業していた人は少しだけ手間が省けると思います。キャプチャした範囲を画像として保存したり、クリップボードへ転送したり、メモを書き加えたりすることもできます。
キャプチャ範囲を常に最前面に表示できる恩恵が大きいため、他のキャプチャーソフトはPC内から自然淘汰されました。
個人的に「おにぎりアイコン」が脱力系で気に入ってます。
ダウンロードはこちらから
CLCL
いわずと知れたクリップボード拡張ソフトです。一度コピーしたデータは履歴として残り、履歴から何回でも再利用することができます。履歴は古いものから上書きされるので、残しておきたいものは登録アイテムとして保存しておくことも可能です。登録アイテムはフォルダ毎に分けることができるので、アイテムが延々と増え続けても大丈夫です(きちんと整理さえしていれば・・・・・・)。私は使用頻度の高い定型文やHTML、CSS、スクリプトなどを登録アイテムの中に入れて使い回しています。
PC起動時は常に使えるように、CLCL.exeをスタートアップフォルダに入れて常駐しておきましょう。
ダウンロードはこちらから
Folders Popup
目的のフォルダーへ素早くアクセスするためランチャーです。マウスのホイールクリック(中ボタンクリック)でメニューを表示し、リストから選んでアクセスできます。
デスクトップ上、エクスプローラ上からだけでなくファイルを開くダイアログや名前を付けて保存ダイアログでも素早く目的のフォルダにアクセスできるので重宝します。
すべて英語表記ですが、表示中のフォルダーをリストに追加するための「Add This Folder」と、リストから削除するための「Remove」(「FoldersPopup Settings」 → 設定画面にて)くらいしか使わないのでまったく問題ありません。
「Opthions」で、好みに合わせてカスタマイズするとさらに使い勝手が良くなります。CLCLと同様に、PC起動時は常に使えるように FoldersPopup-X_X_X-XX-bit.exe をスタートアップフォルダに入れて常駐させておきましょう。
ダウンロードはこちら
通常版はインストールが必要なので、インストール不要で使えるポータブル版をおすすめします。(ポータブル版は作者のページにある「Download this zip file」でダウンロード可能)
おわりに
Raptureで参考資料を最前面に表示しつつ、Folders Popupで素早く目的のアプリを起動し、CLCL でクリップボード履歴を活用しながら作業を進める・・・・・・。この組み合わせだけでも、月間・年間でかなりの時短ができると思います。
他にもまだまだある便利なフリーソフト・・・・・・、皆さんのお気に入りは何でしょうか?
電気の雑学 ブラックアウト・ブラックスタートについて分かりやすく説明する試み(雑記-15)
今回は VBA とはまったく関係ありません。書くことも無くなってきた たまには違うことも書いてみましょう。
2018年9月6日に起こった、北海道胆振地方の地震および全域停電はまだ記憶に新しいところです。被災された方、停電で日常生活が困難になった方はとても大変だったことだろうと思います。
その間、テレビのニュースなどでは ブラックアウト という聞き慣れない言葉が頻繁に出てきました。今回はブラックアウトについて、さらにもっと聞き慣れないブラックスタートについても簡単に説明をしてみたいと思います。
ブラックアウトとは?
例えば、スポーツジムなどにあるエアロバイクをA君、B君、C君で漕いでいるとします。特別ルールとして、エアロバイクは常に一定の回転数で漕がなければなりません。このときエアロバイクが「負荷」、漕いでいる人が「発電機」、回転数が「商用周波数」に当たります。
9月6日の事象では、A君が苫東厚真火力発電所です。
漕いでいる途中で一番パワーのあるA君が膝を痛めて(地震で被災して)離脱してしまいました。漕ぐ力が2/3以下となってしまって回転数を維持することがしんどくなり、B君が離脱・・・・・・ほどなくしてC君も離脱。これでエアロバイクは完全に停止・・・・・・。これがブラックアウトです。
ブラックスタートとは?
さて、完全に停止したエアロバイクを再び回転させるにはどうすればいいでしょうか?まず、一人で<軽めの負荷で>漕ぎ、回転数を維持しつつ、徐々に負荷を増やしていきます。負荷に合わせて漕ぐ人数も二人・三人と増やしていきます。で、完全復旧!
ってな風に、簡単にはいきません。
人間は電気がなくても活動ができますが、発電機は電気なしで発電を開始することができません。皮肉な話ですが。
全電源が喪失されたなかで発電を開始するには・・・・・・はて?どうしましょう(@_@;)
実はこういう時のために外部電源なしでも発電を開始することができる 特殊な水力発電所<ブラックスタート機能を有する発電機> がいくつか用意されています。エンジン発電機などを組み込んであり、それで発電した電気を用いて水力発電機を起動する仕組みです。(その、エンジン発電機自体はバッテリーなどを火種にして起動しています・・・・・・)
発電した電気を途中で消費されないようになるべく負荷を切り離した状態で、火力発電所などに送り届けます。(ポジトロンスナイパーライフルに電力を集中させるヤ○マ作戦のようだ。と、いうのは不謹慎なのでお控え下さい( ̄ω ̄;))
次に火力発電所などを起動します。
負荷を接続し停電を解消します。
これはかなり簡略化した図ですが、実際の順番やタイミングはもっと複雑怪奇です。
9/6 ~ 8に行われたブラックスタートは一回目が失敗に終わり、二回目で成功したそうです。
疑問を自分で回答してみる!
自分で感じた疑問を自分自身で回答してみます!専門家のツッコミは受け付けません。
疑問1
Q.太陽光や風力でブラックアウトは阻止できないの?また、ブラックスタートはできないの?
- A.今の技術だと太陽光や風力は・・・・・例えるなら エアロバイクを力のある別の誰か(例えば火力や原子力)が先に漕いでいること が前提の補佐的発電しか行うことができません。漕ぐ力も弱め、かつ気まぐれです。なので、電源の主軸となることができません。
疑問2
Q.本州側から電気の融通はできなかったの?
- A.本州側から海底ケーブルを通じて融通できる上限は60万kWです。苫東厚真火力発電所の停止で喪失した電源は165万kWであることを考えると、足りていません。また、片方がブラックアウトしている状態では 交直変換 ができないという欠点もあるそうです。
疑問3
Q.原発は起動できないの?
- A.国の許可が下りるまでは起動できません。
ブラックアウト・ブラックスタート・それに関連した疑問等についてざっくりと説明してみましたが、なんとなく分かっていただけたでしょうか?普段あたりまえのように使っている電気ですが、今回のように全域で喪失する場合があることも分かりました。これを機に、電気のみならず ライフラインと呼ばれるもの(電気・ガス・水道・電話・インターネット・交通 等)が普段不自由なく使えることのありがたみを考えてみるのもいいかもしれませんね。
Word 左からの文字数指定で置換する
前回は段落の両端に対しての処理でしたが、今回は段落の内側にアプローチしてみたいと思います。
ということで、左からの文字数指定で各段落の内側を置換するマクロを作ってみました。
前回と同じように任意の範囲を選択します。
仮に左から5文字目を置換開始位置にし、そこから3文字分を ヽ(‘ ∇‘ )ノ に置換してみます。
範囲選択してからマクロ実行。InputBox の指示に従い、置換開始位置、置換開始位置からの文字数、指定文字を入力するだけで使えます。
コードはこちら。
Sub 左からの文字数指定で置換する() '選択範囲内にある各段落に対して処理します 'ReplaceEndが0指定のときは、置換開始位置の左側に挿入されます Dim ReplaceStart As Integer Dim ReplaceEnd As Integer Dim 指定文字 As String Dim SelectionStart As Integer Dim SelectionEnd As Integer Dim 段落 As Paragraph ReplaceStart = InputBox("左から何文字目を置換開始位置にしますか?") If ReplaceStart < 1 Then ReplaceStart = 1 End If ReplaceEnd = InputBox("開始位置から何文字分を置換しますか?") If ReplaceEnd < 0 Then ReplaceEnd = 0 End If 指定文字 = InputBox("置換後の文字を入力して下さい。") If 指定文字 = "" Then Exit Sub End If 'Textプロパティで選択が解除されるので、選択範囲を記憶させる SelectionStart = Selection.Start SelectionEnd = Selection.End For Each 段落 In ActiveDocument.Range(SelectionStart, SelectionEnd).Paragraphs If 段落.Range.Start + ReplaceStart - 1 < 段落.Range.End - 1 Then '開始位置が段落の文字数を超過している場合は処理しない If 段落.Range.Start + ReplaceStart + ReplaceEnd - 1 <= 段落.Range.End - 1 Then ActiveDocument.Range(段落.Range.Start + ReplaceStart - 1, _ 段落.Range.Start + ReplaceStart + ReplaceEnd - 1).Text = 指定文字 Else '開始位置からの文字数が段落の範囲を超える場合、強制的に範囲内で収める ActiveDocument.Range(段落.Range.Start + ReplaceStart - 1, _ 段落.Range.End - 1).Text = 指定文字 End If End If Next End Sub
※コードの大まかな流れ
- まず左から何文字目を開始位置にするか、開始位置から何文字分を置換するか、置換後の文字を何にするか InputBox で指定します。
- 現在の選択範囲の開始位置と終了位置を変数に入れておきます(処理中に選択が解除されてしまうため)。
- For Each ~Next で、選択範囲内の段落すべてにループ処理を行います。
- ループ内の処理:置換開始位置から指定文字分を Text プロパティで置換します。(条件分岐では、各段落の末端位置よりも置換開始位置が超過していた場合は処理をパスし、指定文字数が超過していた場合はマイナス補正〔末端位置まで〕をかけています。)
※コードの使用方法
- SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存し、やり直しのできる状態にしておいて下さい。Wordで標準モジュールにコードを貼り付けてマクロを使用する方法はこちら。
Word 選択範囲の段落の先頭または末尾に指定文字を挿入する
文書の各段落の先頭や末尾に文字をまとめて追加したい場面ってありませんか?
「俺(私)にそんな場面はないっ!」って方には、ここから下の記事は無用の長物です。他の場所に GoTo して下さい。
ということで、今回は選択範囲内にある各段落(の先頭または末尾)にマクロを使って指定文字を挿入させてみようと思います。
実験に協力していただくのは次の文書です。
注:魂の叫びではありません。
目次
各段落の先頭に指定文字を挿入する
任意の範囲を選択した状態でマクロを実行。マクロ実行後に表示される InputBox で入力した文字が各段落の先頭に挿入されるようにします。
コードはこちらです。
Sub 選択中の段落の先頭に指定文字を挿入する() Dim 指定文字 As String Dim 段落 As Paragraph 指定文字 = InputBox("先頭に挿入する文字を入力して下さい。") If 指定文字 = "" Then Exit Sub End If For Each 段落 In Selection.Paragraphs 段落.Range.InsertBefore 指定文字 Next End Sub
選択範囲内の段落すべてに For Each ~Next でループ処理を行うようにします。
ループ内では、一つの段落の範囲に対して InsertBefore で先頭に指定文字を挿入させています。これは簡単ですね。
各段落の末尾に指定文字を挿入する
考え方は先ほどと同じですが、今度は指定文字が各段落の末尾に挿入されるようにします。
コードはこちらです。
Sub 選択中の段落の末尾に指定文字を挿入する() Dim 指定文字 As String Dim 段落 As Paragraph 指定文字 = InputBox("末尾に挿入する文字を入力して下さい。") If 指定文字 = "" Then Exit Sub End If For Each 段落 In Selection.Paragraphs ActiveDocument.Range(0, 段落.Range.End - 1).InsertAfter 指定文字 '改行の手前に挿入するのがポイント Next End Sub
先ほどのコードを、 InsertBefore から InsertAfter に変えるだけでは上手くいかないので若干工夫が必要です。
そのまま InsertAfter にすると改行の後ろ(つまり次の段落の先頭)に文字が挿入されてしまいます。なので Range.End から-1文字の位置(つまり改行の前)に挿入させましょう。この時、段落の Range は引数指定できないので、 ActiveDocument.Range を使用します。
各段落の先頭にクリップボードの各文字を挿入する
ここからはおまけです。
各段落の先頭に InputBox の指定文字ではなく、クリップボードの各行の文字を挿入させます。
コードはこちらです。
Sub 選択中の段落の先頭にクリップボードのデータを貼り付け() Dim myLib As Object Set myLib = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") '参照設定なしでDataObjectのインスタンスを生成する Dim 全文字列 As String Dim 分割文字列 As Variant Dim i As Integer Dim 段落 As Paragraph myLib.GetFromClipboard On Error Resume Next 全文字列 = myLib.GetText On Error GoTo 0 If 全文字列 <> "" Then 分割文字列 = Split(全文字列, vbCrLf) '全文字列を改行で分割し配列に格納する i = 0 For Each 段落 In Selection.Paragraphs If i <= UBound(分割文字列) Then 段落.Range.InsertBefore 分割文字列(i) i = i + 1 Else Exit For End If Next Else MsgBox "クリップボードにデータがありません!" End If End Sub
各段落の末尾にクリップボードの各文字を挿入する
各段落の末尾に InputBox の指定文字ではなく、クリップボードの各行の文字を挿入させます。
コードはこちらです。
Sub 選択中の段落の末尾にクリップボードのデータを貼り付け() Dim myLib As Object Set myLib = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") '参照設定なしでDataObjectのインスタンスを生成する Dim 全文字列 As String Dim 分割文字列 As Variant Dim i As Integer Dim 段落 As Paragraph myLib.GetFromClipboard On Error Resume Next 全文字列 = myLib.GetText On Error GoTo 0 If 全文字列 <> "" Then 分割文字列 = Split(全文字列, vbCrLf) '全文字列を改行で分割し配列に格納する i = 0 For Each 段落 In Selection.Paragraphs If i <= UBound(分割文字列) Then ActiveDocument.Range(0, 段落.Range.End - 1).InsertAfter 分割文字列(i) '改行の手前に挿入するのがポイント i = i + 1 Else Exit For End If Next Else MsgBox "クリップボードにデータがありません!" End If End Sub
※コードの使用方法
- SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存し、やり直しのできる状態にしておいて下さい。Wordで標準モジュールにコードを貼り付けてマクロを使用する方法はこちら。
Word 開いている全文書の同じ行にクリップボードのデータを貼り付ける
今回は Word で開いているすべての文書の同じ行(厳密にいうと段落※)にクリップボードのデータを貼り付けさせてみたいと思います。
イメージとしてはこんな感じ。
マクロ実行時にアクティブな文書(最前面にある文書)のカーソル位置を読み取り、すべての文書の同じ行にデータを貼り付けします。
貼り付けされる順番は、アクティブな文書から・・・・・・ではなく、どの文書がアクティブであろうとも文書を開いた順番と逆(最後に開いた文書 → 最初に開いた文書)になるので注意して下さい。
コードはこちら。
Sub 現在開いている全文書の同じ行にクリップボードのデータを貼り付ける() '現在アクティブになっている文書のカーソル位置と同じ行(厳密には段落)にデータが貼り付けされます 'データが貼り付けされる順番は文書を開いた順番と逆(最後に開いた文書 → 最初に開いた文書)になります Dim myLib As Object Set myLib = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") '参照設定なしでDataObjectのインスタンスを生成する Dim 全文字列 As String Dim 分割文字列 As Variant Dim i As Integer Dim 段落番号 As Integer Dim 文書 As Document myLib.GetFromClipboard On Error Resume Next 全文字列 = myLib.GetText On Error GoTo 0 If 全文字列 <> "" Then 分割文字列 = Split(全文字列, vbCrLf) '全文字列を改行で分割し配列に格納する i = 0 段落番号 = ActiveDocument.Range(0, Selection.End + 1).Paragraphs.Count 'カーソル位置の段落番号を取得する For Each 文書 In Documents '処理の順番は文書を開いた順番と逆になることに注意! If i <= UBound(分割文字列) Then 文書.Paragraphs(段落番号).Range.InsertBefore 分割文字列(i) i = i + 1 Else Exit For End If Next Else MsgBox "クリップボードにデータがありません!" End If End Sub
※コードの大まかな流れ
- まず、クリップボードの全文字列を変数に格納します。
- 次に、Split関数を使って全文字列を改行(CrLf)で分割し配列に格納します。
- アクティブな文書のカーソル位置の段落番号(つまり、カーソルがあるのは先頭から数えて何個目の段落か)を Paragraphs.Count でカウントして変数に格納します。※段落の先頭にカーソルがある場合、一つ前の段落までしかカウントされないため、先頭からカーソル位置+1文字の範囲内にある段落をカウントさせています。
- For Each ~Next で、現在開いているすべての文書に対してループ処理を行います。
- ループ内の処理:文書の該当の段落に配列の文字列を挿入します(次のループで、配列は次の要素に進みます)。ループの途中で配列の要素が尽きたら、ループを抜けて終了します。
※段落とは?
- 改行の次の文字から次の改行までを指します。次の改行までが長くなると右端で折り返されて複数行に渡る場合もあります。
※コードの使用方法
- SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存し、やり直しのできる状態にしておいて下さい。Wordで標準モジュールにコードを貼り付けてマクロを使用する方法はこちら。