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の可能性を十分感じさせてくれる内容でした。
今後もその他のプログラムソースで試して、報告したいと思います。