9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

前任者のエクセルVBAを解析したい・・

Last updated at Posted at 2024-10-23

サラリーマンの皆さん、こんな事思ったことありませんか?
「前任者の作成したVBAが訳わからん!」
「入社する会社間違えてね?!」と・・・。

会社には一人二人いるんですよ・・。めちゃくちゃエクセルに詳しい人が!!
そんな人物の後任になったが最後・・記述したエクセルVBAがわからん!
だけど、業務にはほぼ必須になっている・・。
という状況が!

まだシートに記述している関数ならなんとかなります。
参照セルもわかるし、「IF」の中に何個「IF」があろうとも一つづつ検証していけばいいですから・・。

VBAになると途端に解析が難しい。
代名詞、変数、行列の指定などなど・・。

そんなコード解析に悩む人に朗報!
勉強になりつつ、コード解析も簡単になる、Chat GPT新機能「Canvas」が登場しました!

Chat GPT「Canvas」

先日新たに、Chat GPTに「Canvas」という機能が追加された。
「Canvas」の昨日は主に以下の通り

コードレビュー:コードを改善提案を行う
ログの追加:デバッグに役立つ
コメントの追加:コードにコメント追加して理解しやすい
バグの修正:問題のあるコードを検出して修正、エラーを解決

簡単に言えば、文章執筆やプログラム言語の編集作業がしやすくなったイメージです。
まだまだ全容は理解していませんが試してみたいと思います。

※注意!現状では有料版のみと機能です

「Canvas」を試してみる

試してみる前に、みなさんこんな事は思ったことありませんか?
「人事異動してきたけど、前任者が作成したVBAがわからん!」
こんな経験はありませんでしょうか。
コードの記述法はたしかに、それぞれの人物の性格がでます。
さらには、エクセルのバージョン変更で動かなくなった時、業務に多大な影響は出る事もあるでしょう。

そんな時に便利なのが、「Canvas」のレビュー機能になります。

実際に使用してみる

今回テスト用コードはこちらになります

Sub ListImageFiles()
    Dim ws As Worksheet
    Dim folderPath As String
    Dim fileName As String
    Dim row As Long
    
    Set ws = ThisWorkbook.Sheets("画像ファイル名")
    
    folderPath = ThisWorkbook.Path & "\"
    
    row = 2
    
    fileName = Dir(folderPath & "*.*")
    
    Do While fileName <> ""
        If LCase(Right(fileName, 3)) = "jpg" Or _
           LCase(Right(fileName, 3)) = "png" Or _
           LCase(Right(fileName, 3)) = "gif" Or _
           LCase(Right(fileName, 3)) = "bmp" Then
           
            ws.Cells(row, 1).Value = fileName
            row = row + 1
        End If
        
        fileName = Dir
    Loop
    
End Sub

マクロを動かす前にフォルダ内はこのようになっています。
image.png
上記VBAをファイルを画像ファイル3種類が同じフォルダに入っている想定です。

エクセルファイルのVBAを起動すると・・・
image.png
A2列以降に画像ファイル名が表示されました!

それでは次に、実際に「Canvas」を使ってみます!

Chat GPT「Canvas」起動方法

Chat GPT「Canvas」の起動方法ですが、
Chat GPTのトップ画面のモデル選択で「GPT-4o with canvas」を選択します。

※注意!現状では有料版のみの機能です

image.png

「Canvas」使用方法

それでは、実際に「Canvas」を使ってみましょう。
まずは、単純にこのコードの改善点として、B列に「拡張子」を追加してもらいましょう。

プロンプト例①

下記エクセルVBAのコードを改良してください。
・改良点
B列に取得した画像ファイルの拡張子を取得してください。

・エクセルVBA
===上記のVBAコード====

このように入力すると下記のような画面になります。
これが新機能の「Canvas」モードになります。

※左側は従来の対話画面、右側がCanvas画面
image.png

この際、例えば「やっぱりC列にファイルサイズを表示するようにしたい!」場合
対話画面に入力すると、「Canvas」画面のコードが修正されます。

※対話画面に「C列にファイルサイズを追加してください」 
入力すると「Canvas」画面に反映される
image.png

プログラムのコーディングする際は、なんどもコード全文のやり取りをしなくても済むので
かなり編集が楽になります!
また、「前のコードに戻したい!」時も右上に戻すボタンがあるので、簡単に戻せます。

「Canvas」便利機能:コードレビュー機能

「Canvas」画面の右下ボタンからコードレビューを選択すると・・・
image.png

なんと、Chat GPTが、コードのチェックをしてくれて改善点を提案してくれます。
「Canvas」画面では、修正箇所をハイライトしてくれるので非常にわかりやすいです。
修正提案を適用するしないなど、選択もできるようになっています。
※この機能は現在使用すると英語で答えが返ってきますが
対話画面に「日本語でお願いします」と入れれば日本語になります。

image.png

最後に

「Canvas」は、プログラミングの初心者から上級者まで、コードの編集や改善を簡単に行える便利です!
コードレビュー機能以外にもバグチェック機能などもありますので
有料版利用している方は試してみてください!
※無料版もいずれ実装予定との事!

それでは、良い旅を!

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?