生成AI活用研究
Geminiと100本ノック 21本目:バックアップファイルの削除

Geminiを中心に生成AIの活用と研究の記録
公開日:2025-05-14 最終更新日:2025-05-14

Geminiと100本ノック 21本目:バックアップファイルの削除


AIのGeminiがVBA100本ノックに挑戦!


Googleが開発した生成AIモデルのGeminiにVBA100本ノックをやってもらいました。
AIがVBAをどこまで扱えるかの実証実験の21本目です。

2025年3月からGemsが無料で使えるようになりました。
そこで、独自に作成したGem(名前は「AI神髄VBA」改良を続けている)を使った回答も掲載しています。


VBA100本ノックの出題と解答

VBA100本ノック 21本目:バックアップファイルの削除
・出題 ・頂いた回答 ・解説 ・補足 ・サイト内関連ページ


Geminiへの出題とGeminiの回答

前回まではGeminiの回答は、キャプチャ画像とそのテキストにしていましたが今回からはテキストのみにします。
Geminiの回答であるというエビデンスの意味でキャプチャを掲載していましたが、さすがにもう必要はないでしょう。

Geminiの回答 Geminiへの出題
VBA問題
自身(ThisWorkbook)と同じフォルダに"BACKUP"フォルダがあります。
このフォルダ内に自身のバックアップが以下の名称で多数入っています。
ブック名_yyyymmddhhmm.xlsm
実行日を含め30日分だけ残し、古いファイルは削除してください。
※日付はファイル名で判断
はい、承知いたしました。指定された条件に基づいて、自身のバックアップファイルを削除するVBAコードを作成します。

このコードは、自身のブックがあるフォルダ内の"BACKUP"フォルダを走査し、ファイル名から抽出した日付が実行日から30日以上経過しているファイルを削除します。

VBA
Sub CleanOldBackups()

  Dim fso As Object     ' FileSystemObject for file operations
  Dim backupFolder As Object ' Object representing the backup folder
  Dim file As Object     ' Object representing a file in the folder
  Dim backupPath As String  ' Full path to the backup folder
  Dim currentWorkbookBaseName As String ' Base name of ThisWorkbook without extension
  Dim fileName As String   ' Name of the file being processed
  Dim dateString As String  ' Extracted date/time string from filename
  Dim fileDate As Date    ' Date value parsed from dateString
  Dim thresholdDate As Date ' Date threshold (30 days ago from today)
  Dim extPos As Long     ' Position of the extension dot
  Dim underscorePos As Long ' Position of the underscore

  ' --- 設定 ---
  Const BACKUP_SUBFOLDER As String = "BACKUP" ' バックアップフォルダ名
  Const DAYS_TO_KEEP As Long = 30       ' 残す日数 (今日を含めて30日分)

  ' --- エラーハンドリング ---
  On Error GoTo ErrorHandler

  ' --- パスとファイル名の取得 ---
  ' 現在のブックのパスとバックアップフォルダ名を結合
  backupPath = ThisWorkbook.Path & "\" & BACKUP_SUBFOLDER & "\"

  ' 現在のブックの拡張子を除いた基本名を取得
  extPos = InStrRev(ThisWorkbook.Name, ".")
  If extPos > 0 Then
    currentWorkbookBaseName = Left(ThisWorkbook.Name, extPos - 1)
  Else
    ' 拡張子がない場合 (通常.xlsmではありえませんが念のため)
    currentWorkbookBaseName = ThisWorkbook.Name
  End If

  ' --- 削除対象の日付しきい値の計算 ---
  ' 今日からDAYS_TO_KEEP日前を計算します。
  ' これより古い日付のファイルが削除対象となります。
  ' DateSerialを使用すると、日付部分のみで時間部分は00:00:00となります。
  thresholdDate = DateSerial(Year(Date), Month(Date), Day(Date) - DAYS_TO_KEEP)

  ' --- FileSystemObjectの設定 ---
  ' 早期バインディングの場合はプロジェクト -> 参照設定 -> Microsoft Scripting Runtime にチェック
  ' 晩期バインディングの場合は CreateObject を使用
  Set fso = CreateObject("Scripting.FileSystemObject")

  ' バックアップフォルダが存在するか確認
  If Not fso.FolderExists(backupPath) Then
    MsgBox "バックアップフォルダが見つかりません:" & vbCrLf & backupPath, vbExclamation
    Exit Sub
  End If

  Set backupFolder = fso.GetFolder(backupPath)

  ' --- ファイルの処理 ---
  ' バックアップフォルダ内の各ファイルをループ処理
  For Each file In backupFolder.Files
    fileName = file.Name

    ' ファイル名が期待される形式 (ブック名_yyyymmddhhmm.xlsm) に一致するかチェック
    underscorePos = InStr(fileName, "_")
    extPos = InStrRev(fileName, ".") ' 拡張子の'.'の位置 (後ろから検索)

    ' 以下の条件を満たすか確認:
    ' 1. '_' が含まれている
    ' 2. '.' が含まれており、かつ '_' よりも後ろにある
    ' 3. '_' の前に基本ブック名がある
    ' 4. '_' と '.' の間に日付/時刻文字列 (yyyymmddhhmm) がある (長さ12)
    ' 5. 拡張子が .xlsm である
    If underscorePos > 0 And extPos > underscorePos Then
      Dim potentialBaseName As String
      Dim potentialDateString As String
      Dim potentialExtension As String

      potentialBaseName = Left(fileName, underscorePos - 1)
      potentialDateString = Mid(fileName, underscorePos + 1, extPos - underscorePos - 1) ' '_'の次から'.'の直前まで
      potentialExtension = Mid(fileName, extPos) ' '.'から最後まで

      ' 条件を満たすかチェック
      If potentialBaseName = currentWorkbookBaseName _
        And Len(potentialDateString) = 12 _
        And LCase(potentialExtension) = ".xlsm" Then

        ' 日付/時刻文字列 (yyyymmddhhmm) を Date 型に変換を試みる
        ' 例: 202312311530 -> 2023/12/31 15:30
        On Error Resume Next ' 日付変換でエラーが発生する可能性があるので一時的にエラーを無視
        fileDate = CDate(Left(potentialDateString, 4) & "/" & Mid(potentialDateString, 5, 2) & "/" & Mid(potentialDateString, 7, 2) & " " & Mid(potentialDateString, 9, 2) & ":" & Right(potentialDateString, 2))

        ' 日付変換に成功したか確認
        If Err.Number <> 0 Then
          ' 変換に失敗した場合、このファイルは対象外としてスキップ
          Debug.Print "Warning: Failed to parse date from filename: " & fileName & " Error: " & Err.Description
          Err.Clear
          On Error GoTo ErrorHandler ' エラーハンドリングを元に戻す
          GoTo NextFile ' 次のファイルへ
        End If
        On Error GoTo ErrorHandler ' エラーハンドリングを元に戻す

        ' ファイルの日付がしきい値よりも古いかチェック
        ' thresholdDateは30日前の00:00:00なので、ファイルの日付がそれより前なら削除
        If fileDate < thresholdDate Then
          ' ファイルを削除
          On Error Resume Next ' 削除中にエラーが発生する可能性があるので一時的にエラーを無視 (例: ファイルが開かれている)
          fso.DeleteFile file.Path, True ' Trueで読み取り専用でも強制的に削除を試みる
          If Err.Number <> 0 Then
            ' 削除に失敗した場合
            Debug.Print "Could not delete file: " & file.Path & " Error: " & Err.Description
            Err.Clear
          End If
          On Error GoTo ErrorHandler ' エラーハンドリングを元に戻す
        End If
      End If
    End If
NextFile:
  Next file

  MsgBox "古いバックアップファイルの削除が完了しました。", vbInformation

  ' --- 終了処理 ---
  Set backupFolder = Nothing
  Set fso = Nothing

  Exit Sub ' 正常終了

ErrorHandler:
  ' エラー発生時の処理
  MsgBox "エラーが発生しました: " & Err.Description, vbCritical

  ' --- 終了処理 (エラー発生時) ---
  If Not backupFolder Is Nothing Then Set backupFolder = Nothing
  If Not fso Is Nothing Then Set fso = Nothing

End Sub

コードの説明:
  1. 定数設定:
    • BACKUP_SUBFOLDER: バックアップフォルダの名前 ("BACKUP") を定義します。
    • DAYS_TO_KEEP: バックアップを保持する日数 (30) を定義します。
  2. パスとファイル名の取得:
    • ThisWorkbook.Path で現在のブックがあるフォルダのパスを取得します。
    • そのパスに BACKUP_SUBFOLDER を結合して、バックアップフォルダのフルパス backupPath を作成します。
    • ThisWorkbook.Name から拡張子 .xlsm を除いたブックの基本名 currentWorkbookBaseName を取得します。
  3. 日付しきい値の計算:
    • Date 関数で今日の日付を取得します。
    • DateSerial(Year(Date), Month(Date), Day(Date) - DAYS_TO_KEEP) を使用して、今日から指定日数 (DAYS_TO_KEEP) を遡った日付を計算します。これが削除の基準となる日付 (thresholdDate) です。この日付以前のファイルが削除対象となります。DateSerial を使うことで、時間部分は自動的に00:00:00になります。
  4. FileSystemObject の利用:
    • CreateObject("Scripting.FileSystemObject") を使用して FileSystemObject を作成します。これはファイル操作を行うためのオブジェクトです。
    • fso.FolderExists(backupPath) でバックアップフォルダが存在するか確認し、なければメッセージを表示して終了します。
    • fso.GetFolder(backupPath) でバックアップフォルダのオブジェクトを取得します。
  5. ファイルの処理ループ:
    • For Each file In backupFolder.Files でバックアップフォルダ内の各ファイルに対してループ処理を行います。
    • 各ファイルについて、file.Name でファイル名を取得します。
    • ファイル名が期待される形式 (基本ブック名_yyyymmddhhmm.xlsm) に一致するか、文字列操作 (InStr, InStrRev, Left, Mid, Len) を使って厳密にチェックします。
    • ファイル名から抽出した yyyymmddhhmm 部分を CDate 関数が認識できる形式 (yyyy/mm/dd hh:mm) に変換し、fileDate (Date型) を取得します。CDate の変換が失敗する可能性を考慮し、On Error Resume Next でエラーを一時的に無視し、Err.Number で成否を確認しています。
    • fileDate < thresholdDate で、ファイルの日付が削除しきい値より古いかどうかを比較します。
    • もし古ければ、fso.DeleteFile file.Path, True でファイルを削除します。True オプションは読み取り専用ファイルでも強制的に削除を試みます。ここでも削除が失敗する可能性を考慮し、On Error Resume Next を使用しています。
  6. エラーハンドリング:
    • On Error GoTo ErrorHandler で、コード実行中にエラーが発生した場合に ErrorHandler ラベルにジャンプするように設定しています。
    • ErrorHandler ラベルでは、エラーメッセージを表示し、FSOオブジェクトを解放して終了します。
    • ループ内の CDate や DeleteFile の周りでは、一時的に On Error Resume Next を使い、特定の処理の失敗をハンドリングしています。
  7. 終了処理:
    • 処理が正常に完了した場合、またはエラー発生した場合に、作成したオブジェクト (fso, backupFolder) を解放 (Set ... = Nothing) しています。

使用方法:
  1. このVBAコードを自身のExcelブック (ThisWorkbook) の標準モジュールに貼り付けます。
  2. 必要であれば、定数 BACKUP_SUBFOLDER や DAYS_TO_KEEP の値を変更します。
  3. このマクロを実行します (CleanOldBackups)。

注意点:
  • このコードはファイル名を厳密に解析して日付を判断します。ファイル名が ブック名_yyyymmddhhmm.xlsm 以外の形式である場合、そのファイルは処理対象外となります。
  • 削除されたファイルはゴミ箱には入らず、完全に削除されます。実行前に重要なファイルがないか確認してください。
  • ファイルが他のプロセスによって開かれている場合など、削除に失敗する可能性があります。その場合、デバッグウィンドウにエラーメッセージが表示されますが、マクロの実行は続行されます(On Error Resume Next のため)。
  • 大量のファイルがある場合、処理に時間がかかることがあります。
  • 初めて実行する際や不安な場合は、削除処理 (fso.DeleteFile file.Path, True) の行をコメントアウトし、Debug.Print "Would delete: " & file.Path のようにして、どのファイルが削除対象になるか確認することをお勧めします。

「実行日を含め30日分だけ残し」
この文章が若干わかりづらかったですよね。
VBA100本ノックの時も、1日分多い少ないという回答は多かったです。
-29なのか-30なのか、判定に=を含めるかどうかの問題です。
当然ここを詳しくプロンプトに書けば問題ないとは思います。
回答では、-30より小さい日付を削除しているので1日文多く残ってしまいますね。

プロンプトがどこまで正確に書けているか、正確にVBAコードが書かれているか。
この辺りは、人間がしっかりとテストする必要があります。


AI神髄VBAへの出題とAI神髄VBAの回答

AI神髄VBAとは、GeminiのGems機能を使って作ったVBAに特化したカスタムAIです。
AI神髄VBAの回答 AI神髄VBAへの出題
VBA問題
自身(ThisWorkbook)と同じフォルダに"BACKUP"フォルダがあります。
このフォルダ内に自身のバックアップが以下の名称で多数入っています。
ブック名_yyyymmddhhmm.xlsm
実行日を含め30日分だけ残し、古いファイルは削除してください。
※日付はファイル名で判断
VBA
Sub CleanOldBackupFiles()
  ' 自身のブックのバックアップフォルダ内の古いファイルを削除します
  ' 実行日を含め30日分のファイルを残し、それより古いファイルを対象とします
  
  Dim fso As Object
  Dim backupFolder As Object
  Dim file As Object
  Dim backupFolderPath As String
  Dim baseFileName As String
  Dim fileDateString As String
  Dim fileDate As Date
  Dim thresholdDate As Date
  Dim fileNameWithoutExt As String
  Dim fileNameOnly As String
  
  ' FileSystemObjectを作成
  Set fso = CreateObject("Scripting.FileSystemObject")
  
  ' 自身のブックの拡張子を除いた名前を取得
  ' 例: MyBook.xlsm -> MyBook
  fileNameWithoutExt = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1)
  
  ' バックアップフォルダのパスを生成
  backupFolderPath = ThisWorkbook.Path & "\BACKUP\"
  
  ' バックアップフォルダが存在しない場合は処理を終了
  If Not fso.FolderExists(backupFolderPath) Then
    MsgBox "バックアップフォルダが見つかりません: " & backupFolderPath, vbInformation
    Exit Sub ' アーリーリターン
  End If
  
  ' バックアップフォルダオブジェクトを取得
  Set backupFolder = fso.GetFolder(backupFolderPath)
  
  ' 基準日(実行日)から30日前の日付を計算
  ' 実行日を含めて30日なので、当日から29日遡った日付が期限となる
  thresholdDate = Date - 29
  
  ' バックアップフォルダ内の各ファイルを処理
  For Each file In backupFolder.Files
    ' ファイル名のみを取得
    fileNameOnly = file.Name
    
    ' ファイル名が自身のブック名のプレフィックスを持ち、かつ指定の形式であるかチェック
    ' 例: MyBook_yyyymmddhhmm.xlsm
    If Left(fileNameOnly, Len(fileNameWithoutExt & "_")) = fileNameWithoutExt & "_" Then
      ' 拡張子を除いた部分から日付文字列(yyyymmddhhmm)を抽出
      ' ファイル名が "ブック名_yyyymmddhhmm.xlsm" の形式であることを前提とする
      ' "_yyyymmddhhmm" 部分は13文字なので、ファイル名の末尾から18文字目から13文字を取得
      ' ファイル名例: "MyBook_202312312359.xlsm"
      ' ファイル名長: 24
      ' InStrRev(fileNameOnly, ".") = 20
      ' Left(fileNameOnly, InStrRev(fileNameOnly, ".") - 1) は "MyBook_202312312359"
      ' そこからRightで13文字取得が確実か? Right(..., 13) -> "_202312312359"
      ' または InStrRevを使って、拡張子の前の部分から日付部分を抽出
      ' InStrRev(fileNameOnly, ".") - 1 で拡張子前の位置
      ' InStr(fileNameOnly, "_") + 1 で _ の次の位置
      ' Mid(fileNameOnly, InStr(fileNameOnly, "_") + 1, 12) で抽出できるはず
      Dim underscorePos As Long
      underscorePos = InStr(fileNameOnly, "_")
      
      ' "_" が見つかり、その後に日付形式らしき長さ(12文字)が続くか確認
      If underscorePos > 0 And Len(fileNameOnly) >= underscorePos + 12 + 5 Then ' +12 for date/time, +5 for .xlsm
        fileDateString = Mid(fileNameOnly, underscorePos + 1, 12) ' yyyymmddhhmm 部分
        
        ' 日付文字列を yyyy/mm/dd hh:mm 形式に変換して日付型に変換
        ' 例: 202312312359 -> 2023/12/31 23:59
        On Error Resume Next ' CDate変換でエラーが発生しても処理を続ける
        fileDate = CDate(Left(fileDateString, 4) & "/" & Mid(fileDateString, 5, 2) & "/" & Mid(fileDateString, 7, 2) _
                 & " " & Mid(fileDateString, 9, 2) & ":" & Right(fileDateString, 2))
        On Error GoTo 0 ' エラーハンドリングを元に戻す
        
        ' 変換が成功し、かつファイルの日付が基準日より古いかチェック
        ' CDate変換が失敗した場合は fileDate がデフォルト値 (1899/12/30 0:00:00) になるので、それも考慮
        If Not fileDate = CDate("1899/12/30 0:00:00") Then ' CDate変換が成功した場合
          ' 時刻部分は比較に含めず、日付のみで比較する
          If DateValue(fileDate) < thresholdDate Then
            ' 30日より古いファイルは削除
            On Error Resume Next ' 削除時にエラーが発生しても処理を続ける
            file.Delete False ' 確認メッセージなしで削除
            On Error GoTo 0 ' エラーハンドリングを元に戻す
          End If
        End If
      End If
    End If
  Next file
  
  ' FileSystemObjectを解放
  Set fso = Nothing
  Set backupFolder = Nothing
  
End Sub

VBAコードの解説

このVBAコードは、自身のExcelブックが保存されているフォルダ内の"BACKUP"という名前のサブフォルダから、実行日を含めて30日より古いバックアップファイルを自動的に削除するものです。
  1. Sub CleanOldBackupFiles(): プロシージャーの開始を宣言します。このプロシージャーがファイル削除の処理を実行します。
  2. 変数の宣言: 処理に必要な各種変数を宣言しています。
    • fso: FileSystemObjectを格納するためのオブジェクト変数です。ファイルやフォルダの操作に使用します。
    • backupFolder: バックアップフォルダのFolderオブジェクトを格納する変数です。
    • file: バックアップフォルダ内の各ファイルを格納する変数です。
    • backupFolderPath: バックアップフォルダの完全なパスを格納する文字列変数です。
    • baseFileName: 自身のブック名の拡張子を除いた部分を格納する文字列変数です。
    • fileDateString: ファイル名から抽出した日付・時刻部分(yyyymmddhhmm)を格納する文字列変数です。
    • fileDate: ファイル名から変換した日付・時刻を格納するDate型変数です。
    • thresholdDate: 削除の基準となる日付(実行日の30日前)を格納するDate型変数です。
    • fileNameWithoutExt: 自身のブック名から拡張子を除いた名前を格納する文字列変数です。
    • fileNameOnly: ループ中のファイル名のみを格納する文字列変数です。
  3. Set fso = CreateObject("Scripting.FileSystemObject"): FileSystemObjectのインスタンスを作成し、fso変数にセットします。これにより、ファイルシステムを操作できるようになります。
  4. fileNameWithoutExt = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1): 自身のブック(ThisWorkbook)の名前から、最後の.より前の部分、つまり拡張子を除いたファイル名を取得し、fileNameWithoutExtに格納します。バックアップファイル名が「元のブック名_日付時刻.xlsm」の形式であることを想定しています。
  5. backupFolderPath = ThisWorkbook.Path & "\BACKUP\": 自身のブックがあるフォルダのパス(ThisWorkbook.Path)に"\BACKUP"を連結して、バックアップフォルダの完全なパスを生成し、backupFolderPathに格納します。
  6. If Not fso.FolderExists(backupFolderPath) Then ... Exit Sub: fso.FolderExistsメソッドを使用して、生成したバックアップフォルダのパスが存在するかどうかを確認します。フォルダが存在しない場合はメッセージボックスを表示し、プロシージャーを終了します(アーリーリターン)。
  7. Set backupFolder = fso.GetFolder(backupFolderPath): バックアップフォルダが存在する場合、fso.GetFolderメソッドでフォルダオブジェクトを取得し、backupFolder変数にセットします。
  8. thresholdDate = Date - 29: VBAのDate関数で取得できる実行日(今日の日付)から29日を引くことで、削除対象を判断する基準となる日付を計算します。実行日を含めて30日間を残すため、当日から29日遡った日付が期限となります。
  9. For Each file In backupFolder.Files ... Next file: backupFolder.Filesコレクション(バックアップフォルダ内の全ファイルの集合)に対してFor Eachループを使用し、ファイルごとに処理を行います。
  10. ファイル名のチェックと日付抽出:
    • fileNameOnly = file.Name: 現在処理しているファイルのファイル名を取得します。
    • If Left(fileNameOnly, Len(fileNameWithoutExt & "_")) = fileNameWithoutExt & "_" Then: ファイル名が「自身のブック名_」で始まっているかを確認します。これにより、自身のブックのバックアップファイルのみを対象とします。
    • 条件を満たす場合、ファイル名から日付・時刻部分(yyyymmddhhmm)を抽出します。InStr関数でファイル名の_の位置を見つけ、Mid関数でその次の文字から12文字を抽出しています。
    • On Error Resume Next ... On Error GoTo 0: CDate関数で日付文字列を日付型に変換する際に、ファイル名形式が想定外などでエラーが発生する可能性を考慮し、エラーを無視して処理を続ける設定を行っています。変換が成功した場合のみ日付比較を行います。
    • 抽出したyyyymmddhhmm形式の文字列をyyyy/mm/dd hh:mm形式に整形し、CDate関数で日付型に変換します。
  11. 日付比較とファイルの削除:
    • If Not fileDate = CDate("1899/12/30 0:00:00") Then: CDate変換が成功したかどうかを確認します。変換に失敗した場合、fileDateはデフォルト値になるため、その値でないことで成功を判断します。
    • If DateValue(fileDate) < thresholdDate Then: 変換されたファイルの日付(DateValueで時刻部分を無視)が、計算しておいた基準日(thresholdDate)より古いかどうかを比較します。
    • 条件を満たす場合(古いファイルである場合)、file.Delete Falseを使用してファイルを削除します。Falseを指定することで、削除の確認メッセージが表示されずに削除が実行されます。ここでも削除時のエラー(ファイルが使用中など)に備え、On Error Resume Nextを使用しています。
  12. オブジェクトの解放:
    • Set fso = Nothing
    • Set backupFolder = Nothing FileSystemObjectやフォルダオブジェクトを使い終えたら、メモリを解放するためにNothingをセットします。
このコードは、FileSystemObjectとFor Eachループを使用することで、簡潔かつ効率的に指定された条件のファイルを検索し、削除することができます。ファイル名解析の部分は、想定されるファイル名形式に基づいて記述されています。

これは良いですね。
特に日付文字列(yyyymmddhhmm)を抽出する部分のコメントは素晴らしい。
これAIが書いているとは思えないほど自然な思考が書かれているように感じます。

このように、ある程度処理を細かくして、機能を絞ったものはAIはしっかりとコードにしてくれるようです。
システム開発でも、細かいSubやFunctionはAIに書いてもらえば良いと思わされます。




同じテーマ「生成AI活用研究」の記事

Geminiと100本ノック 13本目:文字列の部分フォント
Geminiと100本ノック 14本目:社外秘シート削除
Geminiと100本ノック 15本目:シートの並べ替え
Geminiと100本ノック 16本目:無駄な改行を削除
Geminiと100本ノック 17本目:重複削除(ユニーク化)
Geminiと100本ノック 18本目:名前定義の削除
Geminiと100本ノック 19本目:図形のコピー
Geminiと100本ノック 20本目:ブックのバックアップ
Geminiと100本ノック 21本目:バックアップファイルの削除
Geminiと100本ノック 22本目:FizzBuzz発展問題
Geminiと100本ノック 21本目:バックアップファイルの削除


新着記事NEW ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ