VBA with ChatGPT:サブフォルダを含むフォルダ内のファイル一覧を作成する

ChatGPTの最も得意とする領域は、プログラミングなんじゃないかと思っています。

割と頻繁に間違えることもあるけど、そこを人が補完すればとても効率よくコーディング~テストを行うことができます。

ファイル一覧マクロの設計

ファイル一覧マクロを設計してくださいじゃたぶん伝わらないので、少し詳細に設計を伝える必要があります。

ExcelのActiveSheetのA1セルにフォルダパスを記述しています。
フォルダパス内から再帰的にファイルの一覧を取得するマクロを作成します。

まずA列からE列の情報を削除します。

3行目以降にファイルの情報を記載します。

A列はファイルのパスを記載します。
B列はファイル名を記載します。
C列はファイルの作成日時を記載します。
D列にはファイルの更新日時を記載します。
E列にはファイルの作成者を記載します。

上記のExcelマクロを作成してください。

たぶんこれで必要な情報は記載したつもりです。

ChatGPTに依頼してみた結果が以下のコードです。

Sub ListFilesInFolder()
    Dim folderPath As String
    Dim ws As Worksheet
    Dim row As Long
    
    ' シートとフォルダパスの設定
    Set ws = ActiveSheet
    folderPath = ws.Range("A1").Value
    
    ' A列からE列を削除
    ws.Range("A:E").ClearContents
    
    ' ヘッダー行の設定
    ws.Range("A2").Value = "File Path"
    ws.Range("B2").Value = "File Name"
    ws.Range("C2").Value = "Creation Date"
    ws.Range("D2").Value = "Last Modified Date"
    ws.Range("E2").Value = "Author"
    
    ' 初期行設定
    row = 3
    
    ' ファイル一覧取得
    Call ListFiles(folderPath, ws, row)
End Sub

Sub ListFiles(folderPath As String, ws As Worksheet, ByRef row As Long)
    Dim fso As Object
    Dim folder As Object
    Dim subFolder As Object
    Dim file As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(folderPath)
    
    ' ファイル情報の取得
    For Each file In folder.Files
        ws.Cells(row, 1).Value = file.Path
        ws.Cells(row, 2).Value = file.Name
        ws.Cells(row, 3).Value = file.DateCreated
        ws.Cells(row, 4).Value = file.DateLastModified
        
        ' 作成者の取得 (注: Officeファイル限定、他のファイルは空白になります)
        On Error Resume Next
        ws.Cells(row, 5).Value = file.BuiltinDocumentProperties("Author")
        On Error GoTo 0
        
        row = row + 1
    Next file
    
    ' サブフォルダの再帰処理
    For Each subFolder In folder.Subfolders
        Call ListFiles(subFolder.Path, ws, row)
    Next subFolder
End Sub

これを新しいExcelを開いて、VBEを開いて記述して実行すると、だいたい指定した通りの動きをしてくれました。

作成者(Author)がないなーと思ったら、ちゃんとコメントで「Officeファイル限定、他のファイルは空白になります」と書いてありましたね。

また、A列からE列を削除のところでA1セルまで消してしまうので、以下のように書き換えました。

    ws.Range("A2:E50000").ClearContents

実質、僕がした仕事は動作確認とこの一行だけでした。

少なくともデスクワークの仕事はなくなっていくんだろうなと実感

もっとざっくりしたことを伝えれば設計のお手伝いもしてくれると思いますが、さらに進化すると「いま何が必要か」まで判断し始めるのでしょう。

人間はそれが合っているか確認して、間違えていたらなおすけど、間違えているのかどうかも分からなくなる時代が来るんじゃないかと思います。

そうなるとデスクワークは少なくとも必要ではなくなるんだろうなという気がしています。

そしてロボットが進化していくと肉体労働も必要なくなって、人間は責任をとることだけが最後の仕事として残る、そんな小説があるらしいのでちょっと読んでみたいですね。

人に残された道

意思決定や責任をとることが人間の仕事なので、単に家でテレビを見ていて何かあったら謝るという風景を想像してしまいます。笑

しかし現実には、たぶんAIを搭載したボディスーツのようなものを身にまとって、現場でAIの挙動や声も含めて、目で見て耳で聴いて働くのだろうなと思っています。

残された道と言うと悲壮感が漂いますが、動物が絶滅するみたいに地球から今でいう人がいなくなるのは、まだだいぶ先のことのような気がします。

またAIを身にまとって進化した人が、宇宙に繰り出していくようなところはSF映画などにも描かれているように、簡単に想像ができますよね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

上部へスクロール