ChatGPTでプログラムソースを生成する(EXCEL VBA編)

AI
スポンサーリンク

ChatGptを使うようになり、文章だけでなくプログラムソースまで生成することが出来る事を知り、今回から自動でどこまで生成が可能かプログラム言語毎に検証してみます。

まずはEXCELのVBA編です。

EXCELにおいて関数で多くの事は実現できますが、ファイル処理や編集でVBAマクロを知っていた方が便利な事は多々あります。

VisualBasicの知識があれば作成しやすいのですが、そうでなければ取っ付き難いものです。

しかしプログラムソースのコードの部分をChatGPTが生成してくれたら、プログラミングの基礎知識があれば効率良く実装が可能になります。

100%のプログラムでなくても、生成されたソースを元に変更して目的のプログラムを作れば、0から開発するよりも遥かに効率的になります。

今回はCSVファイルの読み込み、書き込みを中心に生成しました。

CSVファイルの読み込み

先ずは以下の説明からCSVファイルを選択してEXCELのシートに設定するVBAを作成しました。

CSVファイルを選択して、そのCSVファイルを開き、各項目を1セルに入力し全行を読みこむVBAプログラムを生成

生成されたソースがこちらです。

Sub ImportCSVFileToCells()
Dim fileName As String
Dim ws As Worksheet
Dim fileContent As String
Dim data() As String
Dim rowNum As Long
Dim i As Long

' シートを選択または作成
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("ImportedData")
On Error GoTo 0
If ws Is Nothing Then
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Name = "ImportedData"
End If

' CSVファイルを選択
With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "CSVファイルを選択"
    .Filters.Add "CSVファイル", "*.csv"
    If .Show = -1 Then
        fileName = .SelectedItems(1)
    Else
        Exit Sub
    End If
End With

' CSVファイルを読み込む
Open fileName For Input As #1
Do Until EOF(1)
    Line Input #1, fileContent
    data = Split(fileContent, ",")

    ' データをセルに配置
    rowNum = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
    For i = 0 To UBound(data)
        ws.Cells(rowNum, i + 1).Value = data(i)
    Next i
Loop
Close #1

End Sub

そしてこのソースに以下の説明がついています。

この通りに実行してみます。

そうすると以下の様にセルに用意したCSVファイルがセットされました。

用意したCSVのデータは全て読み込まれましたが、1行目が空いてしまっています。

ソースを見ると「rowNum = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1」の行で「+1」の部分が余計ですので、ここを削るだけで1行目からセットされるようになりました。

これで要求は満たされた事になります。

行にすると40行弱の行数ですが、ソース作成に掛った時間はChatGptに要求内容を記入した時間からソースが生成されるまでの3分にも満たない時間です。

しかも変更も上記の1点だけですので5分程度です。生成とデバックで合わせて10分未満となります。

通常だと慣れた人でも30分程は掛かると思いますので大幅な効率化になっています。

CSVファイルの出力

次はシート全体をCSVファイルで出力するソースを生成します。

入力した生成要求はこちらになります。

excelでシートの1行目からA列が空白以外の全ての行のA列からD列を、項目間をカンマで区切ったCSVファイルに出力するVBAマクロを生成

ここから出力されたソースがこちらになります。

Sub ExportToCSV()
Dim ws As Worksheet
Dim lastRow As Long
Dim exportRange As Range
Dim csvFileName As String
Dim cell As Range
Dim rowNum As Long
Dim colNum As Long
Dim csvData As String

' アクティブなシートを取得
Set ws = ActiveSheet

' 最終行を取得
lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

' エクスポート対象の範囲を設定
Set exportRange = ws.Range("A1:D" & lastRow)

' CSVファイル名を指定
csvFileName = "ExportedData.csv"

' CSVデータを構築
For rowNum = 1 To exportRange.Rows.Count
    For colNum = 1 To exportRange.Columns.Count
        csvData = csvData & exportRange.Cells(rowNum, colNum).Value
        If colNum < exportRange.Columns.Count Then
            csvData = csvData & ","
        End If
    Next colNum
    csvData = csvData & vbCrLf
Next rowNum

' CSVファイルにデータを書き込む
Open csvFileName For Output As #1
Print #1, csvData
Close #1

End Sub

ここでも上と同様の説明がついていました。

今回もこの通り実行してみました。

その結果、出力したCSVファイルがこちらです。

今回は全く修正する必要がありませんでした。

このまま使えるソースとなっていました。

まとめ

今回、初めてChatGptでプログラムソースを生成して、正直驚きでした。

1~2行の要求コメントから十分運用レベルのプログラムソースが生成されました。

若干の訂正が必要になる事もありましたが、プログラミングの基本が分かれば十分対応出来るレベルです。

それよりもやはり開発工数が大幅に軽減され、VBAに詳しく無い人でも要求事項を書く事でプログラムソースが出来るのは実務で十分大きな助けになるはずです。

生成AIの可能性を十分感じさせてくれる内容でした。

今後もその他のプログラムソースで試して、報告したいと思います。

タイトルとURLをコピーしました