youblog

Excel VBA ツール : 全シートの コメント をセルに一覧に出力する

今回は、Excel に含まれる コメント を一覧に出力してくれる Excel VBA の ツール を作ってみたのでシェアしますね。

 

 

こんにちは、ゆう(@ProgYuki)です。

以前、

全シートの全てのオートシェイプの文字列を抽出して一覧に出力するツール

Excel VBA ツール : オートシェイプ内の文字列をセルに一覧出力する
普段仕事をする中で頻繁にExcelを使うと思うのですが、「オートシェイプに書いてある文字列をセルに出力したい」っていう場面ないですか?今回は、 オートシェイプの文字列を一覧に出力してくれる Excel VBA の ツール を作ってみたのでシェアしますね。

 

を作りましたが、今回はそれを応用して

全シートの全てのコメントを一覧に出力するツール

を作ってみたので、シェアしますね。

 

とは言っても、コード的には大した違いはないのですが、どうやらExcel VBAでは、オートシェイプの文字列の扱い方とコメントの文字列の扱い方が異なるようだったので、別のツールとして分けました。

普段業務の中で、Excelのコメント機能を使う場面があると思いますが、コメントのままだとデータとして扱いにくいので、

全てのコメントをセルに出力したい

って場合はたまにあると思います。

 

私も以前、欲しいなと思っていた機能でして、アイディアリストにストックしておいたので、今回作成してみることにしました。

同じようなニーズがある方やこれからVBAを学びたい方は、この記事内にプログラムコード全文も含めてますので、利用してもらえればと思います。

 

なお、ツールの利用は自己責任でお願いします。特にVBAは、一旦処理が走るとエラーがあってもctl + z 等で戻ることができませんので、必ず初めて使うときはバックアップ等を取ってから利用してくださいね。

 

Excel VBA ツール : 全シートの コメント をセルに一覧に出力する

マクロ ツール の機能、使用用途、使い方

 

機能

このツールの機能は、

Excel ブックに含まれる全てのシートの全てのコメントを抽出して、

を指定したセルに一覧に出力する、というものです。

 

使用用途

使用用途は、想定としては

等です。

コメントに記載した文字列を一つづつコピーしたりするのは面倒ですし、データとして扱いにくいので、セルに一覧出力しておくと何かと便利だと思います。

 

使い方

コードをコピーする場所やプログラムの起動の仕方は後ほど説明しますが、使い方としては、

  1. 何かしらのコメントがある状態で
  2. マクロを起動して
  3. コメント一覧を出力したいセルを指定すると
  4. 自動的にコメント一覧のテーブルが作成される

という感じです。

 

画像つきで示すと、

①何かしらのコメントがある状態で

例として適当にコメントを作ってみました。

各コメント内に書いてある文字列(Comment1 , Hello World! ..etc)が今回セルに出力したい文字列です。

 

②マクロを起動して

起動の仕方はいろいろとあります。

ご自身でも調べてみると良いと思いますが、一番わかりやすい方法としては、

「開発」→「マクロ」

と進むと実行できるマクロの一覧が表示されるので、そこで今回は「commentExtract」という名前にしているので、それを選択して「実行」を押せば実行されます。

うまくできましたかね?
もし、何かエラー等があれば、コメントかTweetでご連絡いただけると幸いです。

 

③コメント一覧を出力したいセルを指定すると

今回のツールは起動するとポップアップが出てきて、出力先のセルを指定できるようにしてます。

適当なセルをクリックして指定ください。

 

④自動的にコメント一覧のテーブルが作成される

セルを指定した後に「OK」をクリックすれば自動的にコメント一覧の表が作成されます。

なお、今回のツールを使うときは基本的にコメントが記入してあるシートとは別の新しいシートを作成して、そこでマクロを実行してください

VBA コードの表示

 

コードの全文は下記の通りです。

Sub accelerate()

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With

End Sub

Sub clearAccelerate()

    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub


Sub commentExtract()

On Error GoTo Err

    Dim sheets As Worksheet, i As Integer, m As Integer, thisSheet As Worksheet
    Set thisSheet = ActiveSheet
   
    Dim rng As Range
    Set rng = Application.InputBox(prompt:="Choose the cell to open the table", Type:=8)
    
    Dim n As Integer
    Dim com As Comment

    i = rng.Row
    m = rng.Column

    Call accelerate
   
Done:

    With thisSheet
        .Cells(i, m).Value = "Sheet Name"
        .Cells(i, m + 1).Value = "Comment Text"
    End With
    
    With thisSheet.Range(Cells(i, m), Cells(i, m + 1))
        .Interior.ColorIndex = 48
        .Font.ColorIndex = 2
        .Font.Bold = True
    End With
    
    For Each sheets In ActiveWorkbook.Worksheets
        If sheets.Comments.Count > 0 Then
            For Each com In sheets.Comments
                thisSheet.Cells(i + 1, m).Value = sheets.Name
                thisSheet.Cells(i + 1, m + 1).Value = com.Text
                i = i + 1
            Next com
        End If
    Next sheets

    For n = 1 To 3
        thisSheet.Columns(m).EntireColumn.AutoFit
        m = m + 1
    Next n

    Call clearAccelerate
    Exit Sub

Err:
End Sub

 

については下記の記事で詳しく書いているので、そちらを参考にされてください。

この記事もツール紹介の記事ですが、「VBA プログラムの表示」の項目の後に詳しいコピーの仕方や注意点について書いてます。

Excel VBA で 仕事効率化 : リンク付き INDEX を自動作成しExcel資料を読みやすくする!
今回は、 Excel VBA の マクロ 機能で リンク付き INDEX を自動作成し、Excel資料を読みやすくして 仕事効率化 する方法をシェアします!「Excelの仕事を効率化したい!」「VBAに興味があって、人のプログラムを見て学習したい!」という方にとって役に立つ内容かと思います。

 

ということで本日は以上になります。

私もまだまだVBA含めプログラミングを学習中の身なので、

もっとこうした方が効率的に書けるよ!
こんな業務効率化したいんだけど、VBAでできるかな?

など、ご指摘やアイディアなどをいただけると嬉しいので、コメントやいただけると幸いです!

 

また、Excel VBAを独学したい方向けに記事を書きましたので、興味がある方はご参考にされてみてください↓

Excel VBA を最も効率的に 独学 する方法
仕事にルーティン業務が多い方ほどVBAの力を爆発的に発揮して業務効率化できるので、VBAを勉強しようと考えたことがある方も多いのではないでしょうか。今回は私が6年ほど Excel VBA を使っていて最も効率的だと考える 独学 方法をお伝えしたいと思います。

 

それでは、お読みいただきありがとうございました。

Twitter(@ProgYuki)でも情報発信しているので、ぜひフォロー、いいね、RT等お願いします!

 

ゆう

モバイルバージョンを終了