「いま始めればちょっと違うTomorrow(ICT)」デジタルDXに向けて その1

自動化大好きKASAです

「繰り返し単調作業は人のやることではなくPCにさせること」が持論です。
世の中「デジタルDX」と騒いでますがそんなことうちの会社がやってくれるわけないとお嘆きの方々
私がお救いしましょうw
もちろん二の足を踏んでいる経営者の方、デジタルDXの基本は以外と身近で簡単な所にもあるんです。
これを見てお手軽コースもあることを知ってほしいと思います。

 

これから何回かに分けてExcelで使える便利なVBAの使い方を書いて行こうかなと思います。
ExcelでVBAが使えるようになると今まで手動でやっていたことが自動でできて便利
もちろんなんでもできるわけではありませんが、一番いやな繰り返しの作業を自動化できます。
そうです、NTTxxに頼まなくても「いま始めればちょっと違うTomorrow(ICT)」を実現できちゃうんですよ
ぜひ技術者ではない方も見ていただきたいと思います。

今回はExcelのBookの中に複数のシートがあって煩雑な場合、自動で目次(シート一覧+シートへのリンク)を作るVBAを作ってみたいと思います。
これで目的のシートに一発移動できます。
これを拡張して一気に全部のExcelに目次をつけたりもできますよ。
そのあたりは次回以降に説明したいと思います。

さて説明に入りましょう。
ボタンの作成については過去ブログ「パソコンにしゃべってもらう」を参照ください。
(書くのが面倒というのが本音w)
まず、目次を作りたいBookを開いて「目次」シートを追加します。
そのシートにボタンを一個つけます。
そのボタンのマクロの記述部分に以下を書き込みます
コピペだと問題ないですが、自分で打ち込む場合は見た目は改行して見えるけど実は1行という部分があるかもしれませんので注意ください。(右端まで行って次の行の先頭が左端とかが怪しいです)

Sub ボタン1_Click() ' ←ここは元からある分になります

'ここから-------------------
Dim i As Long
Dim SheetsCnt As Long
Dim SheetName As String

' シートの数を取得します
SheetsCnt = ThisWorkbook.Sheets.Count

'シートの数だけ処理を繰り返す(1~シート数)
For i = 1 To SheetsCnt

    'シート名の取得
    SheetName = Sheets(i).Name

    '目次シートのB列のセル「Cells(i + 1, 2)」に順番「i+1」にシートの名前を書き込む
    Sheets("目次").Cells(i + 1, 2) = SheetName

    '目次シートに各シートにジャンプするリンクをD列「Cells(i + 1, 4)」に作成する
    Sheets("目次").Cells(i + 1, 4) = "=hyperlink(""#'" + SheetName + "'!A1"",""" + SheetName + "へ移動"")"

Next i
'ここまで-------------------

End Sub' ←ここは元からある分になります

たったこれだけ
これでボタンを押すと目次の出来上がり!

シートが多いBookには便利です。
シートのコピーを使えばこの作ったシートを他のBookにコピーするでけでコピー先でそのまま使えますよ
おっと「元から「シートの選択ウインドウ」があるやん」という声が、
それなりのExcelユーザーの方ですね
たしかにこれだけだと大差ないように思います。 で・す・が!
すべてのExcelのBookの目次を一枚のシートで管理できるとしたらどうでしょう
あらゆるBookのあらゆるシートに一発でアクセスできるわけです。
目的のデータ(シート)を探しでフォルダをうろうろする必要がなくなり効率アップ!
ショートカットでデスクトップがいっぱいということもなくなります。
ここではそういったものを目指します。
今回はその導入部
興味の出てきた人はぜひここまでを実践してみてください。
これをどんどん拡張していきたいと思います。

弊社でも「いま始めればちょっと違うTomorrow(ICT)」デジタルDX実現に向けたお手伝いをしております。
大規模なものはもちろん、日々使うExcelをもうちょっとイケてるものにしたいとかいったご要望も含め
ご相談をお受けしておりますので弊社ホームページのお問い合わせをご利用ください!

Pocket