Changing Text Color in Word with a Shortcut Key

Since I try to avoid using the mouse as much as possible, I used to change the text color in Word by adding the “Text Color” function to the Quick Access Toolbar, as shown in the image below, and displaying the “Text Color Palette” using [Alt] + a number.

Changing text color in Word via Quick Access Toolbar

However, with this method, after pressing the [Alt] key and the corresponding number (in this case, 4 for the fourth item from the left), I had to move the cursor to the desired color, which was a bit cumbersome.

While searching for a simpler way, I discovered that, at least in Word, you can change the text color instantly with a shortcut key by configuring it, so I decided to set it up.

For non-Word files, this method doesn’t seem to exist, and you’d need to create a macro. I’ve explained how to do this for PowerPoint in another blog post, so feel free to check it out if you’re interested.

http://k2-ornata.com/powerpoint_macro_strings_red/

Assigning a shortcut to change text color in Word

Word offers a function to assign shortcuts to various features, and here’s how to set one up for changing text to a specific color:

1. Select “Customize Ribbon” from “Options”

From the Word editing screen, choose “File.”

Word – Editing screen

From the file screen, select “Options” at the bottom.

Word – File screen

In the “Word Options” screen that appears, choose “Customize Ribbon” from the menu on the left, then click the “Customize” button for the shortcut keys (highlighted in red).

Word – Options screen

2. Customize the keyboard shortcuts

In the “Customize Keyboard” screen:
・Category: All Commands
・Command: Color:
・Color: Red (or choose your preferred color)
Then, focus on the “Press new shortcut key” field and press your desired shortcut (I chose Alt+R).

Word – Customize Keyboard screen

After that, click the “Assign” button to complete the setup.

3. Changing the text color

Now, use the shortcut you set up to change the text color of the selected text.

After selecting text with your mouse, press the “Alt+R” key, and the selected text will change to red, as shown below.

Word – Editing screen

For example, during an online meeting, you can quickly change the color of important text while talking to others. This trick is both smart and impressive, so give it a try!

Excelで複数のシートに散らばっている文字列を置換する

最初、複数のシートを選択して、普通に置換しようとしたのですがうまくいきませんでした。

そこで少し調べてみたところ、置換のオプションで以下の通り、「シート」ではなく「ブック」を指定すればいいことがわかったので、ここに記載しておきます。

検索場所としてブックを指定

以下のように「検索オプション」の「検索場所」から「ブック」を指定し置換を行うと、すべてのシートに跨がって置換処理を行なってくれます。

Excel Online 置換操作

テキストで作成した議事録をWordに取り込んだ後、フォーマットを整形するVBAを作成してみた(その2)テーブルの追加

前回、Word VBAを利用して文字の検索やアラインメント、文字の修飾などを実施しました。

http://k2-ornata.com/word-vba_minutes_format/

今回は、テーブル(表)を作成し、その中に日時や場所、参加者を入れ込んでみたいと思います。

1.処理イメージ

元となるデータのイメージは以下の通りです。
テキストデータをWordに取り込み、なんの修飾もしていない状態です。

元データのイメージ

また、完成形のイメージは以下の通りです。
タイトルの下にテーブルを作成し、その中に「日時」「場所」「参加者」の情報を移動させます。

VBAで加工後のデータイメージ

2.VBAのプログラム説明

ここでは前回の(その1)から変更した部分を中心に説明していきます。
前回同様、初心者なのでプログラムがダサいのはおおめに見てください。

Option Explicit

Sub editMinuts()

Dim d_tbl As Table
Dim d_exc As String
Dim d_txt As String

' Chr(10): Line Feed, Chr(13): Carriage Return
d_exc = Chr(10) & Chr(13)

With Selection.Find
    .Text = "2022."
    .MatchByte = True
    .Wrap = wdFindContinue
    .Execute
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End With

With Selection.Find
    .Text = "議事録"
    .Wrap = wdFindContinue
    .Execute
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

' 1 line forward
Selection.Move wdLine, 1

' insert return charactor
Selection.TypeParagraph

' 1 line forward
Selection.Move wdLine, 1

' create table
Set d_tbl = ActiveDocument.Tables.Add(Selection.Range, 3, 2, wdWord9TableBehavior)

' insert charactor into table
d_tbl.Cell(1, 1).Select
Selection.TypeText Text:="日時"

d_tbl.Cell(2, 1).Select
Selection.TypeText Text:="場所"

d_tbl.Cell(3, 1).Select
Selection.TypeText Text:="参加者"

' find date&time charator
With Selection.Find
    .Text = "日時:"
    .Wrap = wdFindContinue
    .Execute
'    Selection.Font.Bold = True
End With

' forward cursor 1 charactor
Selection.Move wdCharacter, 1

' select charactor from cursor to line end
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveEndWhile Cset:=d_exc, Count:=wdBackward

' get charactor from cursor to line end
d_txt = Selection.Text

' check d_txt contents
'MsgBox d_txt

Selection.Sentences(1).Delete

' insert d_txt into d_tbl
d_tbl.Cell(1, 2).Select
Selection.TypeText Text:=d_txt

' find place charator
With Selection.Find
    .Text = "場所:"
    .Wrap = wdFindContinue
    .Execute
'    Selection.Font.Bold = True
End With

' forward cursor 1 charactor
Selection.Move wdCharacter, 1

' select charactor from cursor to line end
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveEndWhile Cset:=d_exc, Count:=wdBackward

' get charactor from cursor to line end
d_txt = Selection.Text

' check d_txt contents
'MsgBox d_txt

Selection.Sentences(1).Delete

' insert d_txt into d_tbl
d_tbl.Cell(2, 2).Select
Selection.TypeText Text:=d_txt

' find attendance charator
With Selection.Find
    .Text = "参加者:"
    .Wrap = wdFindContinue
    .Execute
'    Selection.Font.Bold = True
End With

' forward cursor 1 charactor
Selection.Move wdCharacter, 1

' select charactor from cursor to line end
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveEndWhile Cset:=d_exc, Count:=wdBackward

' get charactor from cursor to line end
d_txt = Selection.Text

' check d_txt contents
'MsgBox d_txt

Selection.Sentences(1).Delete

' insert d_txt into d_tbl
d_tbl.Cell(3, 2).Select
Selection.TypeText Text:=d_txt


With Selection.Find
    .Text = "アクションアイテム:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With


With Selection.Find
    .Text = "次回:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

Selection.Move wdLine, 1

Selection.InsertBreak Type:=wdPageBreak

With Selection.Find
    .Text = "内容:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

End Sub

以下、ポイントを解説していきます。

Dim d_tbl As Table
Dim d_exc As String
Dim d_txt As String

' Chr(10): Line Feed, Chr(13): Carriage Return
d_exc = Chr(10) & Chr(13)

<解説>
最初の3行で変数を定義し、その中の一つ d_exc にLine Feed と Carriage Returnキャラクタを設定しています。
これは後ほど、カーソル位置から行末までの文字を選択する際に、改行の制御文字を含まない為の処理となっています。

' create table
Set d_tbl = ActiveDocument.Tables.Add(Selection.Range, 3, 2, wdWord9TableBehavior)

' insert charactor into table
d_tbl.Cell(1, 1).Select
Selection.TypeText Text:="日時"

d_tbl.Cell(2, 1).Select
Selection.TypeText Text:="場所"

d_tbl.Cell(3, 1).Select
Selection.TypeText Text:="参加者"

<解説>
ActiveDocument.Tables.Addの部分で3×2のテーブルを作成し、その後、それぞれの行の最初の列に「日時」「場所」「参加者」の文字を書き込んでいます。

With Selection.Find
    .Text = "日時:"
    .Wrap = wdFindContinue
    .Execute
'    Selection.Font.Bold = True
End With

' forward cursor 1 charactor
Selection.Move wdCharacter, 1

<解説>
最初のfind処理で”日時:”のところにカーソルが来ているはず?なので、その後のSelection.Moveのところで1文字分カーソルを進ませています。
なぜ1文字でよいのかよくわかっていませんが、こうするとうまくいきました。(笑

' select charactor from cursor to line end
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveEndWhile Cset:=d_exc, Count:=wdBackward

<解説>
Selection.EndkeyのExtend:=wdExtendで選択範囲を維持しながら、Unit:=wdLineで行末に移動しています。
また、Selection.MoveEndWhile Cset:=d_excにて、先ほどd_excに設定したキャラクタが右隣に来るまで移動させています。

' get charactor from cursor to line end
d_txt = Selection.Text

' check d_txt contents
'MsgBox d_txt

Selection.Sentences(1).Delete

' insert d_txt into d_tbl
d_tbl.Cell(1, 2).Select
Selection.TypeText Text:=d_txt

<解説>
d_txt = Selection.Textにて、現在選択されている範囲の文字をd_txtに取り込み、Selection.Sentences(1).Deleteでその行を消し去った後、d_txtの内容をテーブルのセル(1,2)にセットしています。

どうでしょう、なんとなくきちんとした議事録っぽくなってきた感じがしませんか?

次に機会があれば「アクションアイテム:」のところで複数行を一気に選択して表に入れる処理を作成できればと思っています。

参考サイト:

・インストラクターのネタ帳(Word VBAで表を作成・挿入する)
https://www.relief.jp/docs/word-vba-add-a-table.html
・インストラクターのネタ帳(Word VBAでカーソルを行末に移動する)
https://www.relief.jp/docs/word-vba-selection-endkey-wdline.html
・みんなのワードマクロ(【コード】選択範囲を広げるWordマクロ(2))
https://www.wordvbalab.com/code/11726/

テキストで作成した議事録をWordに取り込んだ後、フォーマットを整形するVBAを作成してみた(その1)文字検索&アラインメント

お仕事で議事録を作成するときに、まずはその場でメモを作成し、あとでWordに清書することがあると思います。

でも、メモからWordに取り込んで書式を整えるのって、結構時間がかかる割に、あまり価値のある作業ではないですよね。

そこで、今回は時短のために、テキストから取り込んだデータのフォーマットを自動的に整えるWord VBAを作成してみました。

1.変換前のWordデータ・イメージ

こちらはテキストの内容をWordに取り込んだ直後のイメージです。見た目は考えず、とりあえず打ち込んでいくとこんな感じになっていると思います。

フォーマットを整える前のデータ・イメージ

2.変換後のWordデータ・イメージ

1.の殴り書き状態からVBAを利用することで、以下の状態にフォーマットを整えさせます。

フォーマット調整後(1ページ目)

<解説>
1行目の作成日付を右寄せする。
2行目の「議事録」をタイトルとしてセンタリングする。
3行目〜9行目までの「日時:」「場所:」「参加者:」「アクションアイテム:」「次回:」を太字にする。

フォーマット調整後(2ページ目)

<解説>
10行目を次ページにした上で「内容:」を太字にする。

3.変換用VBA

そして以下がフォーマット整型用のVBAになります。(素人なので書き方がダサくてすみません。)

Option Explicit

Sub editMinuts()

With Selection.Find
    .Text = "2022."
    .MatchByte = True
    .Wrap = wdFindContinue
    .Execute
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End With

With Selection.Find
    .Text = "議事録"
    .Wrap = wdFindContinue
    .Execute
    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With

With Selection.Find
    .Text = "日時:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

With Selection.Find
    .Text = "場所:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

With Selection.Find
    .Text = "参加者:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

With Selection.Find
    .Text = "アクションアイテム:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

With Selection.Find
    .Text = "次回:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

Selection.Move wdLine, 1

Selection.InsertBreak Type:=wdPageBreak

With Selection.Find
    .Text = "内容:"
    .Wrap = wdFindContinue
    .Execute
    Selection.Font.Bold = True
End With

End Sub

4.VBAの解説

それではポイントを少し解説しておきます。
なお、かなりアバウトに勉強しながら書いているので、雰囲気で説明している部分があります。
正確にはマイクロソフトの公式サイトなどを読んでください。

最初の方の3〜10行目あたり

With Selection.Find
    .Text = "2022."
    .MatchByte = True
    .Wrap = wdFindContinue
    .Execute
    Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End With

<解説>
.Text = “2022.”:データの中から”2022.”を検索します。
.MatchByte = True:上記”2022.”に完全に一致する文字を検索します。(全角などはヒットしないようにしています)
.Wrap = wdFindContinue:1つ見つかっても、次を見つけにいきます。
.Execute:検索を実行します。
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight:見つかったら、それを含む行を右寄せします。

下から8〜9行目あたり

Selection.Move wdLine, 1

Selection.InsertBreak Type:=wdPageBreak

<解説>
Selection.Move wdLine, 1:一つ手前の処理で「次回:」まで検索していますので、その下に改ページを入れる為、カーソルを1行進ませます。
Selection.InsertBreak Type:=wdPageBreak:改ページを挿入します。

今回は以上になりますが、今後時間があれば、Wordに表を入れるVBAなどを作成してみたいと考えています。

IT企業の人が読んでも役に立つ「ITツール活用術」

「マンガでわかる!驚くほど仕事がはかどるITツール活用術(KADOKAWA)」という本をKindleで見つけたので、読んでみました。

読む前は、もしかしたら知っていることばかりかもしれないなぁと思っていましたが、実際に読んでみると、私の気がついていなかったポイントが書かれており、目からウロコなポイントがいくつかありました。

ただし、Google とSlackをメインに記載されているので、自分の会社がMicrosoft系のオフィスツールメインで利用している場合は、読み替えたり、実現できないことがあるかもしれませんので注意してください。

以下、この本を読んでいてウロコだったポイントを記載しておきます。

1.Teamsでの一括メンション

私も最近はTeamsやSlackでメンションすることがありますが、基本的に特定の個人に対してのみメンションしており、関係者全員にメンションすることはありません。

しかしながら、全員に見ておいてほしい内容があった場合、全員にメンションすることも検討したほうがいいのでは、と気がつかされました。

しかし!どうやらTeamsでは、「グループ」や「会議」のチェットスペースの参加者全員に一括してメンションを送る方法はなさそうです。

ちなみに、Teamsでチャットできるスペースは上記以外にも「チーム」や「チャネル」のチャットスペースがあり、これらについては、それぞれ「 @team」「 @channel」 とすれば一括してメンションができるようです。

まあ、個人的には「チーム」や「チャネル」のような大きな単位で一括メンションする機会はあまりなさそうですが。。。

2.会議案内へのアジェンダ添付

Outlookのスケジュール機能で会議案内を出した後、会議のアジェンダを作成した場合には、会議のスケジュールにアジェンダを添付するとよいと書かれており、たしかにそのとおりかもしれないと思いました。

どうもまだ自分もDXしきれていないようで、会議案内はスケジュール、会議資料はメールで連絡、としておりました。

しかし、会議案内自体にアジェンダの資料、もしくはその資料へのリンクを貼り付けておくと、会議参加者はメールを掘り返すことなく、当日のアジェンダを確認できるので便利だし、事前に確認してもらえる確率もあがりそうな気がします。

3.資料のチェックは会議チャットで事前に実施

たまに、誰かが作成した資料をチェックする為の会議が実施されることがあります。

しかし事前にチャットでその資料についてコメントしあえれば、会議の時間を減らせるかもしれませんし、コメントの状況によっては会議をやめてもいいかもしれないと気がつかされました。

その為に、前出のグループチャットや会議チャットを活用するのはありだなーと思います。

4.朝のクイック朝礼実施

この本に書かれているとおり、リモートワークが浸透して会社にあまり行く必要がなくなったのは楽で良いのですが、他のメンバーと顔を合わせる機会がめっきり減りました。

その為、チームの他のメンバーが何をやっているか把握しづらくなってきています。

そこで毎朝15分程度でいいのでクイック朝礼を実施するとよい、と書かれており、たしかに、それも考えた方がいいなあと思いました。

ただし、いきなり一方的にクイック朝礼を実施しようと言っても、朝の効率の良い時間を削られることになり抵抗のあるメンバーもいると思いますので、

・毎日実施するのか?
・朝の何時ごろに実施するか?
・全員参加にするか、それとも参加できるひとだけにするか?

は事前にメンバーで検討して決めた方がいいのではないかと思っています。

以上、4つほど目からウロコだった点を記載しましたが、これ以外にもExcelでいう「一時シートビュー」のような機能の紹介もあり、いろいろと業務を効率的に進めていく上で参考になる点がたくさん書いてありますので、気になる方は手にとってみてはいかがでしょうか?

Outlookのメールフォルダをショートカットで選択する

普段、PCを操作しているときになるべくマウスを使わないようにしています。

Outlookについてもなるべくショートカットで操作していますが、最近、メールフォルダを選択するショートカットを見つけましたので、ここでご紹介しておきます。

Outlookにて[CTRL]+Y でフォルダーへ移動

このショートカットは下図の赤枠のメールフォルダに直接フォーカスを当てるわけではなく、画面中央に表示されている「フォルダーへ移動」画面を表示させます。

「フォルダーへ移動」画面が表示されたら矢印キーでフィルダを選択し、リターンキーを叩くだけです。

このショートカットキーを使うことで、単にマウスを使わなくて良いというだけではなく、普段はこのメールフォルダーのペイン(赤枠部分)を縮小(左に畳んでおく)ことができ、より広い画面でメールの一覧を表示させておくことが可能です。

なお、Outlookのショートカットや便利な使い方が記載されている本について、以下のブログで紹介していますので、よかったら併せて読んでみてください。

http://k2-ornata.com/book_outlook/

Wordの文字の色をショートカットで一発変更

普段からなるべくマウスを使わないようにしている私は、いままでWordの文字の色を変える場合、下図のようにクイックアクセスに「文字の色変更」機能を追加し、[Alt]+数字で「文字の色変更パレット」を表示するようにしていました。

Word – クイックアクセスからも文字色変更

しかしこの方法だと、[Alt]キーと数字キー(上の場合だと左から4番目にあるので4)を押した後、さらに変えたい色の場所までカーソルで移動させる必要があり、すこしめんどうでした。

そこでもっと簡単な方法がないか探していたところ、Officeの中でもWordに限ってはショートカットを設定するだけで一発で文字色を変えることができることを発見した為、それを設定してみました。

なお、Wordファイル以外はなぜか同じ方法が無く、マクロを作る必要があります。以下のブログでPowerPointの場合を解説していますので、もし興味があれば参考にしてみてください。

http://k2-ornata.com/powerpoint_macro_strings_red

キーボードのユーザ設定から様々な機能をショートカット可能

Wordではさまざまな機能をショートカットで呼び出せる機能がついているようですが、その中でも文字色を特定の色に変えるショートカットの設定方法を説明します。

1.「オプション」から「リボンのユーザ設定」を選択

Wordの編集画面から「ファイル」を選択します。

Word – 編集画面

以下のファイル画面の最下部にある「オプション」を選択します。

Wort – ファイル

「Wordのオプション」画面が表示されますので、左側のメニューにて「リボンのユーザー設定」を選択後、赤枠で囲ったショートカットキーの「ユーザー設定」ボタンを押します。

Word – オプション画面

2.キーボードのユーザー設定

「キーボードのユーザー設定」画面が表示されますので、
分類:すべてのコマンド
コマンド:Color:
:赤(好きな色を選択してください)
を指定した後、「割り当てるキーを押してください」にフォーカスを当てて好きなショートカットキーを押してください。(私の場合は、Alt+R)

Word – キーボードのユーザー設定画面

この後「割り当て」ボタンを押せば設定は完了です。

3.実際に文字色を変えてみる

先ほど設定したショートカットキーを使って、選択した文字の色を変えてみます。

マウスで文字を選択した後、「Alt+R」キーを押せば、以下のように選択した文字の色が赤に変わります。

Word – 編集画面

例えばオンライン会議中に他の人と会議しながら、重要な部分の文字の色をサッと変えれば、スマートですし、おおっと思われるはずですので是非使ってみてください。

PowerPointマクロで選択文字列を黒→赤→青の順に切り替える

前回、PowerPointマクロを利用して、オブジェクト内の選択文字列を赤文字に変える手順を記載しました。

http://k2-ornata.com/powerpoint_macro_strings_red/

しかしながら、この方法だと違う色にする毎にマクロを作成し、クイックアクセスツールバーに登録しなければなりません。

そこで今回は勉強も兼ねて、マクロを実行する度に色を黒→赤→青に変えるプログラムに変更してみました。

With文とIf文を使ってプログラミング

とはいえ、私はVBAについてほぼ初心者なので、With文がなんなのかよく知らず、それを調べる所から始めました。
ちなみになぜ、With文を使おうと思ったかというと、マクロの記録をしたときに、ちょくちょくWith文が使われていたからです。

With文について

どうも調べてみると、With文の中では共通のオブジェクトに対して操作が可能になるようです。

つまり、前回以下のようなプログラムを書きましたが、

Sub 文字列を赤にする()
   ActiveWindow.Selection.TextRange.Font.Color.RGB = RGB(255, 0, 0)
End Sub

With文を利用して、以下のように書き換えることが可能のようです。

Sub 色を変える()
   With ActiveWindow.Selection
      .TextRange.Font.Color.RGB = RGB(255, 0, 0)
   End With
End Sub

Withで操作するオブジェクトを指定しておくことで、End Withまで、いちいちそのオブジェクトを指定しなくて良い、というメリットがあるようです。
上の例だと1回しか操作していないのであまり意味がないですが、同じオブジェクトに対して操作する場合は、With文を使うと効率的ですね。

If文について

If文については、なんからプログラミングされたことがある方なら、どういうものかご存知だと思います。

今回は、指定した文字列が黒だったら赤、赤だったら青、黒および赤以外だったら黒に戻すというプログラムにしました。

プログラミング内容

以下が実際にプログラミングした結果は以下の通りです。

Sub 色を変える()
   
   With ActiveWindow.Selection

      If .TextRange.Font.Color.RGB = RGB(0, 0, 0) Then
         .TextRange.Font.Color.RGB = RGB(255, 0, 0)
      ElseIf .TextRange.Font.Color.RGB = RGB(255, 0, 0) Then
         .TextRange.Font.Color.RGB = RGB(0, 0, 255)
      Else
         .TextRange.Font.Color.RGB = RGB(0, 0, 0)
      End If
      
   End With

End Sub

With文を使っているとはいえ、最初にオブジェクトの宣言などをして、もう少しスッキリしたプログラムにできそうですが、今回でPower Point VBAは2回目だし、これで動いたので、とりあえず良しとしたいと思います。

もしこれからPower Point VBAを勉強しようとしている方の参考になれば幸いです。

PowerPointマクロで選択文字列を赤字にすばやく変更

Power Point編集中に選択した文字の色を変える際に、私はウィンドウの最上部にある「クイックアクセスツールバー」に「文字色の変更」を割り当てて、キー操作だけで変えれるようにしています。

ただその場合、「文字色の変更」を選択した後で毎回パレットから目的の色を選ばなければならない為、めんどうだなぁと思っていました。

Power Pointのカラーパレット

そこで今回、Power Pointの標準の機能ではなく、マクロを利用して、すぐに特定の色(今回は赤)に変更できるようにしてみました。

クイックアクセスツールバーで直接指定した色に変更

マクロ+クイックアクセスツールバーで、よく使う色をダイレクトに指定できるようになります。

なお、本当はクイックアクセスツールバーではなくショートカットキーでマクロを実行させたかったのですが、どうやらPower Pointでは簡単ではないようです。

1.マクロを作成

Power Pointのツールバーから「開発」(表示されていない場合は、「ファイル」-「オプション」-「リボンのユーザ設定」から表示させることが可能。)を選択し、リボンから「マクロ」を選択します。

Power Poiint

「マクロ」を選択すると以下のポップアップが表示されますので、マクロ名を新規に入力し、「作成」ボタンを押します。

マクロポップアップ

すると、マクロのエディタ画面が表示されますので、文字色を赤に変えるマクロを記述します。

マクロ・エディタ画面

マクロの記述内容としては、Sub と End Subの間に以下のとおり、1行追加するだけです。

Sub 文字列を赤にする()
   ActiveWindow.Selection.TextRange.Font.Color.RGB = RGB(255, 0, 0)
End Sub

マクロの記述が終わったら、セーブしてウィンドウを閉じます。

2.クイックアクセスツールバーの設定

クイックアクセスツールバーの設定は、PowerPointのメニューバーから「ファイル」を選択すると以下の画面が表示されるので、そこから左下の「オプション」を選択します。

Power Point

「オプション」ウィンドウが開いたら、ウィンドウの左側から「クイック アクセス ツール バー」を選択後、「コマンドの選択(C)」から「マクロ」を選択します。

Power Pointのオプション

その後、その下に先ほど作成したマクロの名前が表示されますので、それを選択し、「追加(A) >>」を押してください。

すると、選択したマクロが「クイック アクセス ツール バー」に登録されますので、右下の「OK」ボタンを押します。

3.クイック アクセス ツール バーからマクロを起動

それでは、クイック アクセス ツール バーに登録したマクロを実際に使ってみます。

まず、下の画面の通り、赤色にしたい文字を選択します。

Power Point

そしてWindowsの「Alt」キー(Macの場合は「option」キー)を押すと、クイック アクセス ツール バーに割り当てられた機能のそれぞれに番号が表示されますので、該当の番号(ここでは7)のキーを押します。

Power Point

すると、以下の通りマウスで選択した部分だけが赤い文字になります。

Power Point

このように、文字列を選択後、キーを2回押すだけで指定した色に変更することが可能になります。

Excel VBAでOutlookのメールを取り込む(その1)

諸事情により、Outlookの受信フォルダに溜まっているメールの一覧をExcelに取り込んでみたくなったので、いろいろなサイトをみながらExcelマクロVBAを作成してみました。

なお、VBAを書き始めるまでのExcelの準備作業は以下に記載していますので、参考にしてください。(そもそもどうやったら、ExcelでVBAを書き始めることができるのかについて詳しく書いています。)

http://k2-ornata.com/office-365-soloexcel-part1/

受信フォルダのメールリストを作成するVBA

1.外部ライブラリの参照設定

まず、今回のVBAは、下記の2つの外部ライブラリへの参照設定が必要です。

・Microsoft Outlook 16.0 Object Library
・Microsoft Scripting Runtime

参照設定の仕方は、VBAのエディターにて、ツールバーの[ツール]-[参照設定]を選択すると以下のように参照設定のポップアップが表示されますので、そこから選択するだけです。

Microsoft VBA

2.プログラムの記述

今回作成したVBAの全体は以下の通りです。
各行の意味はコメントで記載していますので、大体わかるのではないかと思います。

' 変数宣言していない場合に警告してくれるらしい
Option Explicit

Sub outlook_mail_list_01()
    
    Dim ol_obj_df, i, n
    Dim ol_obj As Outlook.Application
    Dim ol_obj_ns, ol_obj_item As Object
    
    ' Outlookオブジェクトの生成
    Set ol_obj = CreateObject("Outlook.Application")
    
    ' メッセージ送受信規約(MAPI)を指定する
    Set ol_obj_ns = ol_obj.GetNamespace("MAPI")
    
    ' 受信トレイの指定
    Set ol_obj_df = ol_obj_ns.GetDefaultFolder(6)

    ' 受信トレイのメール件数をポップアップ表示
    ' MsgBox ol_obj_df.Items.Count
    
    ' メールを1件ずつ読み込んでExcelに出力
    For i = 1 To ol_obj_df.Items.Count
        Set ol_obj_item = ol_obj_df.Items(i)

        Cells(i, 1) = i
        Cells(i, 2) = ol_obj_item.ReceivedTime
        Cells(i, 3) = ol_obj_item.Subject
        Cells(i, 4) = ol_obj_item.SenderName
        Cells(i, 5) = ol_obj_item.SenderEmailAddress
        Cells(i, 6) = Left(ol_obj_item.Body, 100)
    
    Next

End Sub

今回は非常にシンプルなものを作成しましたが、今後、時間があれば添付ファイルをローカルのフォルダに保存していくVBAなども作成していきたいと考えています。