【入門編】【実務中級】Presentation.SlideMaster.CustomLayoutsを巡回し、各カスタムレイアウトが「どのスライド(SlideIndex)で使用されているか」を逆引きマッピングしてExcelシートに一覧出力する、テンプレート監査マクロ – PowerPoint VBA解析バイブル

スポンサーリンク

伝説のチーフアーキテクトとして、魂を込めて語りかけましょう。

—

【PowerPoint VBA深掘り】使われないレイアウトはもういらない!カスタムレイアウトとスライドの依存関係を解き明かすテンプレート監査マクロ

皆さん、こんにちは! 最強の業務自動化を目指す先輩エンジニアの〇〇です。
PowerPoint VBAの世界へようこそ!

「プレゼンテーション資料、いつの間にかスライドマスタがめちゃくちゃに増えて、どれが使われているんだかサッパリ…」
「もう使わないレイアウトが山ほどあるのに、どれを削除していいか分からない!」

こんなお悩み、抱えていませんか? 大規模な社内テンプレートを運用していると、よくある「テンプレート肥大化問題」ですよね。無駄なレイアウトはファイルサイズを大きくするだけでなく、メンテナンス性も著しく低下させてしまいます。

ご安心ください! 今日は、そんなモヤモヤを一気に解決するパワフルなVBAマクロをご紹介します。PowerPointのスライドマスタ内にあるすべてのカスタムレイアウトが、どのスライドで使われているかを完全に逆引きマッピングし、Excelシートに一覧出力する「テンプレート監査マクロ」を一緒に作っていきましょう。

「マクロの記録」から一歩踏み出し、オブジェクトモデルの真髄に触れる絶好のチャンスです。ここをクリアすれば、PowerPoint VBAの基礎はバッチリ、そして応用力もグッと高まりますよ! さあ、本質を学びながら、あなたのPowerPointスキルを次のレベルへ引き上げましょう!

—

1. なぜ「逆引き」が必要なのか?テンプレート整理の深い課題

まずは、このマクロがなぜ必要とされているのか、その背景から理解を深めましょう。

PowerPointで新しいスライドを作成する際、通常は「ホーム」タブの「新しいスライド」から好きなレイアウトを選びますよね。この時選んでいるのが、スライドマスタに定義された「カスタムレイアウト」です。

![PowerPointの「新しいスライド」メニューのイメージ](https://via.placeholder.com/800×200?text=PowerPoint+%E3%80%8C%E6%96%B0%E3%81%97%E3%81%84%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%89%E3%80%8D%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC)
(イメージ図:PowerPointの「新しいスライド」メニューとカスタムレイアウト選択の様子)

PowerPoint VBAで、特定のスライドがどのレイアウトを使っているかを知るのは比較的簡単です。
`ActivePresentation.Slides(1).CustomLayout.Name` と書けば、1枚目のスライドが使っているレイアウト名がすぐに分かります。これは「スライド → レイアウト」という順方向の参照です。

しかし、テンプレートを整理したい場合、私たちが知りたいのは「このカスタムレイアウトは、どのスライドで使われているのか?」という情報です。これは「レイアウト → スライド」という逆方向の参照になります。

残念ながら、PowerPointのオブジェクトモデルは、`CustomLayout`オブジェクトから直接「私を使っているスライドはこれとこれです!」と教えてくれるプロパティを持っていません。だからこそ、すべてのスライドを一つずつ巡回し、各スライドがどのレイアウトを使っているかを比較する「逆引き」処理が必要になるのです。

この「逆引き」の概念を理解することは、PowerPointに限らず、多くのアプリケーションのオブジェクトモデルを扱う上で非常に重要になります。データ間の関係性をどう解析するか、というプログラミング的思考の基礎とも言えるでしょう。

—

2. PowerPoint VBAの基礎のキソ:オブジェクトモデルの入り口を理解する

さあ、いよいよコードに入る前に、PowerPoint VBAの「骨格」となるオブジェクトモデルについて、優しく紐解いていきましょう。

VBAプログラミングは、「オブジェクト」と呼ばれる操作対象を「ドット(.)」で繋いで、まるで玉ねぎの皮を剥くように深掘りしていくイメージです。

2.1. 最上位オブジェクト `Application`:PowerPointアプリケーションそのもの

すべての始まりは、`Application`オブジェクトです。これはPowerPointアプリケーション全体を表します。VBAでPowerPointを操作する際は、必ずこの`Application`を起点とします。

  • 例: `Application.ActivePresentation` (現在開いているプレゼンテーション)

2.2. `Presentation`:開いているプレゼンテーションファイル

`Application`の下には、開いている個々のプレゼンテーションファイルを表す`Presentation`オブジェクトがあります。PowerPointでは複数のプレゼンテーションを同時に開くことができますが、それぞれのファイルが独立した`Presentation`オブジェクトとして扱われます。

  • 例: `ActivePresentation` (現在アクティブなプレゼンテーション)

2.3. `SlideMaster`:プレゼンテーションの「親玉」デザイン定義

`Presentation`オブジェクトの中には、そのプレゼンテーション全体のデザインやレイアウトを統括する`SlideMaster`オブジェクトが一つだけ存在します。ここが、カスタムレイアウトの定義元となる「親玉」です。

  • 例: `ActivePresentation.SlideMaster`

2.4. `CustomLayouts`コレクション:カスタムレイアウトの「箱」

`SlideMaster`オブジェクトには、そのプレゼンテーションで利用可能なすべてのカスタムレイアウトを格納する`CustomLayouts`という「コレクション」があります。コレクションとは、複数の同じ種類のオブジェクトをまとめて扱うための「箱」のようなものです。

  • 例: `ActivePresentation.SlideMaster.CustomLayouts` (すべてのカスタムレイアウトの集合)

2.5. `CustomLayout`:個々のカスタムレイアウト

`CustomLayouts`コレクションの中に入っているのが、個々のカスタムレイアウトを表す`CustomLayout`オブジェクトです。例えば、「タイトルとコンテンツ」「見出しのみ」といった、私たちが選ぶ一つ一つのレイアウトがこれに当たります。

  • 例: `ActivePresentation.SlideMaster.CustomLayouts(1)` (1番目のカスタムレイアウト)

2.6. `Slides`コレクションと `Slide`:個々のスライドたち

そして、`Presentation`オブジェクトには、個々のスライドをまとめた`Slides`コレクションがあり、その中の一つ一つが`Slide`オブジェクトです。私たちが普段編集している「ページ」そのものですね。

  • 例: `ActivePresentation.Slides` (すべてのスライドの集合)
  • 例: `ActivePresentation.Slides(1)` (1枚目のスライド)

これらのオブジェクトは、まるで会社の組織図のように、上位のオブジェクトが下位のオブジェクトを「持っている」という階層構造を形成しています。この構造を理解することが、VBAで自由自在にPowerPointを操るための第一歩です。

![PowerPointオブジェクトモデルの階層イメージ図](https://via.placeholder.com/800×400?text=PowerPoint+VBA+Object+Model+Hierarchy+%28Application+%3E+Presentation+%3E+SlideMaster+%26+Slides%29)
(イメージ図:Application → Presentation → SlideMaster / CustomLayouts / CustomLayout と Presentation → Slides / Slide の関係)

—

3. 実践!カスタムレイアウト監査マクロの作成

さあ、いよいよ本丸、マクロのコードを書いていきましょう!

今回のマクロは、以下の流れで処理を進めます。

1. Excelの準備: 結果を出力するためのExcelアプリケーションを起動し、シートを用意します。
2. PowerPointオブジェクトの取得: 現在開いているPowerPointプレゼンテーションを取得します。
3. カスタムレイアウトの巡回: スライドマスタ内の各カスタムレイアウトを一つずつ取り出します。
4. スライドの巡回と比較: 各カスタムレイアウトに対し、プレゼンテーション内のすべてスライドを巡回し、そのスライドが該当のカスタムレイアウトを使っているか判定します。
5. Excelへの出力: 判定結果をExcelシートに書き込みます。
6. 終了処理: Excelを保存・終了し、使用したオブジェクトを適切に解放します。

VBAコード

PowerPoint VBAのVBE(Alt + F11 で開く)で、新しい標準モジュールを挿入し、以下のコードを貼り付けてください。

Option Explicit

Sub AuditCustomLayoutUsage()

‘==============================================================================================
‘ テンプレート監査マクロ: カスタムレイアウトがどのスライドで使用されているかをExcelに出力
‘ 作成者: 〇〇 (伝説のチーフアーキテクト)
‘ 最終更新日: 2023-10-27
‘
‘ 目的:
‘ PowerPointプレゼンテーション内の各カスタムレイアウトについて、
‘ それがどのスライド(スライド番号とタイトル)で使用されているかを詳細に分析し、
‘ Excelシートに一覧として出力します。
‘ これにより、使用されていない無駄なカスタムレイアウトの特定や、
‘ テンプレートの効率的な整理・スリム化を支援します。
‘
‘ 前提条件:
‘ 1. マクロ実行時にPowerPointプレゼンテーションが一つ開かれていること。
‘ 2. Excelオブジェクトライブラリへの参照設定が不要なように、
‘ CreateObject(“Excel.Application”)を使用しています。
‘ (早期バインディングを利用する場合は「Microsoft Excel XX.0 Object Library」への参照設定が必要です)
‘
‘ 動作概要:
‘ 1. Excelアプリケーションを起動し、結果出力用の新しいワークブックを作成します。
‘ 2. アクティブなPowerPointプレゼンテーションを取得します。
‘ 3. プレゼンテーション内のすべてのカスタムレイアウトを順番に処理します。
‘ 4. 各カスタムレイアウトに対し、プレゼンテーション内のすべてのスライドを巡回し、
‘ そのスライドが現在のカスタムレイアウトを使用しているかを比較します。
‘ 5. 使用されているスライドが見つかった場合、その情報をExcelシートに記録します。
‘ 6. 最後に、Excelアプリケーションを適切に終了し、オブジェクトを解放します。
‘
‘ オブジェクトのライフサイクルと解放に関する重要な注意点:
‘ 外部アプリケーション(Excel)を操作する場合、オブジェクトの生成と解放は非常に重要です。
‘ Set obj = Nothing を適切に実行しないと、メモリリークやGhostプロセス(見えないExcelプロセス)
‘ の原因となり、システムリソースを消費し続ける可能性があります。
‘ 特にエラー発生時には、確実にオブジェクトが解放されるようにエラーハンドリングを導入しています。
‘==============================================================================================

‘ オブジェクト変数の宣言
Dim ppApp As Object ‘ PowerPoint.Application を表すオブジェクト (今回は直接使用しないが一般的なパターン)
Dim ppPres As PowerPoint.Presentation ‘ 現在アクティブなプレゼンテーション
Dim ppMaster As PowerPoint.SlideMaster ‘ プレゼンテーションのスライドマスタ
Dim cl As PowerPoint.CustomLayout ‘ 個々のカスタムレイアウト
Dim s As PowerPoint.Slide ‘ 個々のスライド

Dim excelApp As Object ‘ Excel.Application を表すオブジェクト
Dim excelWb As Object ‘ Excel.Workbook を表すオブジェクト
Dim excelWs As Object ‘ Excel.Worksheet を表すオブジェクト
Dim rowNum As Long ‘ Excelの行番号を管理する変数
Dim layoutUsedCount As Long ‘ 各カスタムレイアウトが使用されているスライド数をカウント

‘ エラーハンドリングの設定
On Error GoTo ErrorHandler

‘———————————————————————————————-
‘ 1. Excelアプリケーションの準備
‘———————————————————————————————-
‘ Excelアプリケーションを新規で作成 (既存のExcelがあればそれが表示されるが、ここでは新規インスタンスが望ましい)
Set excelApp = CreateObject(“Excel.Application”)
excelApp.Visible = True ‘ Excelを可視化する (作業状況を確認するため)
excelApp.DisplayAlerts = False ‘ 警告メッセージ(上書き確認など)を表示しない

‘ 新しいワークブックを追加
Set excelWb = excelApp.Workbooks.Add
Set excelWs = excelWb.Sheets(1) ‘ 1番目のシートを操作対象にする

‘ Excelシートのヘッダー行を設定
With excelWs
.Cells(1, 1).Value = “カスタムレイアウト名”
.Cells(1, 2).Value = “レイアウトID”
.Cells(1, 3).Value = “使用スライド数”
.Cells(1, 4).Value = “使用スライド(番号:タイトル)”
.Range(“A1:D1”).Font.Bold = True ‘ ヘッダーを太字にする
.Columns(“A:D”).ColumnWidth = 30 ‘ 列幅を調整
End With
rowNum = 2 ‘ データは2行目から書き込む

‘———————————————————————————————-
‘ 2. PowerPointオブジェクトの取得
‘———————————————————————————————-
‘ PowerPointアプリケーションの取得 (ここではActivePresentationを利用するため、直接は使わないが参照として)
Set ppApp = Application ‘ 現在のPowerPointアプリケーションインスタンスを取得

‘ 現在アクティブなプレゼンテーションを取得
‘ もしプレゼンテーションが開かれていない場合はエラーとなるため、エラーハンドリングが重要
If ppApp.Presentations.Count = 0 Then
MsgBox “PowerPointプレゼンテーションが開かれていません。一つ開いてから再度実行してください。”, vbCritical
GoTo CleanUp ‘ エラーハンドラではなく、クリーンアップルーチンへ直接ジャンプ
End If
Set ppPres = ppApp.ActivePresentation

‘ プレゼンテーションのスライドマスタを取得
Set ppMaster = ppPres.SlideMaster

‘———————————————————————————————-
‘ 3. カスタムレイアウトの巡回
‘———————————————————————————————-
MsgBox “カスタムレイアウトの監査を開始します。完了までしばらくお待ちください。”, vbInformation

‘ スライドマスタ内の各カスタムレイアウトを順番に処理
For Each cl In ppMaster.CustomLayouts
layoutUsedCount = 0 ‘ 各カスタムレイアウトごとの使用スライド数をリセット
Dim usedSlidesList As String ‘ 使用されているスライド情報を格納する文字列

‘——————————————————————————————
‘ 4. スライドの巡回と比較 (逆引き処理の核心!)
‘——————————————————————————————
‘ 現在のカスタムレイアウトが、どのスライドで使用されているかを確認
For Each s In ppPres.Slides
‘ もしスライドが現在のカスタムレイアウトを使用している場合
If s.CustomLayout Is cl Then
layoutUsedCount = layoutUsedCount + 1
‘ スライド番号とタイトルをリストに追加
If usedSlidesList = “” Then
usedSlidesList = s.SlideIndex & “:” & s.SlideNumber & ” (” & s.SlideID & “) – ” & s.SlideTitle
Else
usedSlidesList = usedSlidesList & Chr(10) & s.SlideIndex & “:” & s.SlideNumber & ” (” & s.SlideID & “) – ” & s.SlideTitle
End If
End If
Next s ‘ 次のスライドへ

‘——————————————————————————————
‘ 5. Excelへの出力
‘——————————————————————————————
With excelWs
.Cells(rowNum, 1).Value = cl.Name ‘ カスタムレイアウト名
.Cells(rowNum, 2).Value = cl.ID ‘ カスタムレイアウトID (固有識別子)
.Cells(rowNum, 3).Value = layoutUsedCount ‘ 使用されているスライド数
.Cells(rowNum, 4).Value = usedSlidesList ‘ 使用スライド情報

‘ もしレイアウトが一度も使われていない場合は、背景色を変更して分かりやすくする
If layoutUsedCount = 0 Then
.Range(.Cells(rowNum, 1), .Cells(rowNum, 4)).Interior.Color = RGB(255, 230, 230) ‘ 薄い赤
End If
End With
rowNum = rowNum + 1 ‘ 次の行へ

Next cl ‘ 次のカスタムレイアウトへ

‘ 最終的な列幅の自動調整
excelWs.Columns(“A:D”).AutoFit

MsgBox “カスタムレイアウトの監査が完了しました!Excelシートをご確認ください。”, vbInformation

CleanUp:
‘———————————————————————————————-
‘ 6. 終了処理とオブジェクトの解放 (非常に重要!)
‘———————————————————————————————-
‘ オブジェクトの解放は、参照を解除し、メモリやリソースのリークを防ぐために必須です。
‘ 特に外部アプリケーション(Excel)を操作した場合、これを怠るとExcelのGhostプロセスが残ることがあります。
If Not excelWs Is Nothing Then Set excelWs = Nothing
If Not excelWb Is Nothing Then
‘ 変更を保存せずにExcelを閉じる(監査結果なので保存はユーザーに任せる)
‘ excelWb.SaveAs “C:\Temp\CustomLayoutAuditReport.xlsx” ‘ 保存したい場合はコメントアウトを外す
excelWb.Close SaveChanges:=False
Set excelWb = Nothing
End If
If Not excelApp Is Nothing Then
excelApp.DisplayAlerts = True ‘ Excelを閉じる前に警告表示を元に戻す
excelApp.Quit ‘ Excelアプリケーションを終了
Set excelApp = Nothing
End If

If Not s Is Nothing Then Set s = Nothing
If Not cl Is Nothing Then Set cl = Nothing
If Not ppMaster Is Nothing Then Set ppMaster = Nothing
If Not ppPres Is Nothing Then Set ppPres = Nothing
If Not ppApp Is Nothing Then Set ppApp = Nothing ‘ Applicationオブジェクトも最後に解放

Exit Sub ‘ 正常終了

ErrorHandler:
‘ エラー発生時の処理
MsgBox “エラーが発生しました: ” & Err.Description & vbCrLf & _
“エラー番号: ” & Err.Number & vbCrLf & _
“処理を中断します。”, vbCritical
‘ エラー時もCleanUpルーチンへジャンプし、オブジェクトを解放する
Resume CleanUp

End Sub

実行方法

1. 監査したいPowerPointファイルを開きます。
2. PowerPointのVBE(`Alt + F11`)を開きます。
3. 左側のプロジェクトエクスプローラーで「VBAProject (ファイル名)」を右クリックし、「挿入」→「標準モジュール」を選択します。
4. 開いたモジュールウィンドウに上記のコードを貼り付けます。
5. コード内の任意の場所をクリックし、ツールバーの「実行」ボタン(▶)をクリックするか、`F5`キーを押して実行します。
6. Excelが起動し、監査結果が出力されます。

—

4. コードのポイントと「極限の知見」:オブジェクトの命と向き合う

このコードには、ただ動くだけではない、プロフェッショナルなVBA開発者が意識すべき「本質的な知見」が詰まっています。

4.1. オブジェクトのライフサイクルと「Set obj = Nothing」の真髄

コードの最後の`CleanUp`セクション、そして`ErrorHandler`の後の`Resume CleanUp`。ここで、すべてのオブジェクト変数に`Set obj = Nothing`を実行していることにお気づきでしょうか?

これは単なるおまじないではありません。VBAでオブジェクト(特に外部アプリケーションのオブジェクト)を生成すると、システムはそのオブジェクトのためのメモリ領域を確保し、VBAのプログラムがそのオブジェクトへの「参照」を持つことになります。

  • 参照カウントの概念: 内部的には、各オブジェクトは「自分を参照しているプログラムがいくつあるか」という参照カウントを持っています。
  • `Set obj = Nothing` は、VBAプログラムがそのオブジェクトへの参照を「手放す」ことを意味します。参照カウントがゼロになると、オブジェクトは不要と判断され、システムは確保していたメモリを解放します。

もしこれを怠ると、たとえVBAプログラムの実行が終わっても、Excelアプリケーションのプロセスがメモリ上に残り続けることがあります。これは通称「Ghostプロセス」と呼ばれ、ユーザーには見えないのにシステムリソースを食い続ける非常に厄介な存在です。特にサーバー上でバッチ処理を行うような場面では、メモリリークの温床となり、やがてはシステム全体のパフォーマンス低下やクラッシュを招く原因となります。

今回のマクロのように、PowerPointからExcelを操作する場合、このオブジェクトの「生成」と「解放」のサイクルを意識し、責任を持って管理することが、堅牢で安定した自動化ツールを作る上でのプロの鉄則なのです。エラーハンドリングと連携させて、どんな状況でも確実にオブジェクトを解放するように設計することも極めて重要です。

4.2. レイトバインディング(`Dim As Object`)の活用

Dim excelApp As Object
Set excelApp = CreateObject(“Excel.Application”)

Excelのオブジェクトを宣言する際に`Dim excelApp As Excel.Application`ではなく`Dim excelApp As Object`と書いている部分があります。これは「レイトバインディング(Late Binding)」と呼ばれる手法です。

  • レイトバインディングのメリット:
  • 参照設定が不要: マクロを実行するPCに特定のOfficeバージョン(例: Excel 16.0 Object Library)への参照設定がなくても動作します。これにより、異なるOffice環境が混在する社内での配布や利用が容易になります。
  • 柔軟性: 実行時にオブジェクトの種類を決定するため、より柔軟なコード記述が可能になります。
  • レイトバインディングのデメリット:
  • パフォーマンス: 実行時にオブジェクトの型を解決するため、アーリーバインディング(`Dim As Excel.Application`)に比べてごくわずかに処理速度が遅くなります。
  • コード補完が効かない: VBE上で`excelApp.`と入力しても、プロパティやメソッドの候補が表示されません。
  • タイプミス検出の遅れ: コンパイル時ではなく実行時までタイプミスが検出されないため、デバッグが難しくなることがあります。

今回は、誰でも簡単に利用できるように、あえて参照設定不要なレイトバインディングを採用しました。

4.3. パフォーマンスへの意識:ループ処理の重み

今回のマクロでは、ネストされた二重ループ(カスタムレイアウトのループの中にスライドのループ)を使用しています。

  • `For Each cl In ppMaster.CustomLayouts` (N個のカスタムレイアウト)
  • `For Each s In ppPres.Slides` (M個のスライド)

この処理は、最悪の場合 `N × M` 回の比較処理が発生します。例えば、カスタムレイアウトが20個、スライドが100枚あれば、`20 × 100 = 2000` 回の比較です。通常のPCであれば一瞬で終わる処理ですが、これが数千枚のスライドや数百個のカスタムレイアウトになると、処理時間は無視できないものになります。

VBAで大規模なデータを扱う際には、このようなループ処理の回数や、ループ内で実行される処理の「重さ」を常に意識することが重要です。無駄な処理を省いたり、アルゴリズムを工夫したりすることで、処理速度は劇的に改善します。今回は実用上問題ないレベルですが、将来的にさらに複雑な解析ツールを作る際には、このパフォーマンスへの意識が非常に重要になってきます。

—

5. 発展的な学習への誘い:あなたの自動化スキルを磨こう!

今回のマクロで、PowerPointのオブジェクトモデルの基礎と、外部アプリケーション連携、そしてオブジェクトのライフサイクルの重要性を体感できたことでしょう。しかし、これはまだ始まりに過ぎません!

  • 詳細なレポート出力:
  • Excelシートにもっと詳細な情報を出力してみましょう。例えば、カスタムレイアウト内のプレースホルダーの種類や数、背景設定など。
  • 各スライドが使用しているレイアウトのスクリーンショットをExcelに貼り付ける、なんてことも可能です。
  • ユーザーインターフェースの追加:
  • 「ユーザーフォーム」を使って、マクロの実行前にどのプレゼンテーションを監査するか、Excelの出力先フォルダはどこにするか、といった選択肢をユーザーに与えることができます。
  • イベントドリブンプログラミング:
  • プレゼンテーションを開いたときや保存したときなど、特定のイベント発生時に自動的にマクロを実行するように設定することも可能です。
  • PowerPoint以外の連携:
  • Excelだけでなく、OutlookやWordなど、他のOfficeアプリケーションとの連携も可能です。例えば、監査結果を自動でメール送信する、といったことも夢ではありません。

あなたのアイデア次第で、PowerPoint VBAは無限の可能性を秘めています。ぜひ、この経験を活かして、さらなる業務自動化の道を切り拓いていってください!

—

6. まとめ:PowerPoint VBAの基本をマスターしたあなたへ

今日の記事では、PowerPointのオブジェクトモデルの階層構造から始まり、実践的な「テンプレート監査マクロ」の作成、そしてプロが意識するべき「オブジェクトのライフサイクル」や「パフォーマンス」といった本質的な知見まで、盛りだくさんの内容をお伝えしました。

  • `Application`、`Presentation`、`SlideMaster`、`CustomLayouts`、`Slide`といった主要オブジェクトの役割と関係性。
  • 「逆引き」処理の必要性と、それを実現するためのロジック。
  • Excelとの連携方法。
  • そして何より、`Set obj = Nothing` の真の意味と、オブジェクトの責任ある管理の重要性。

これらを理解し、自らの手でコードを書き、実行できたあなたは、もう「マクロの記録」から完全に卒業したと言えるでしょう。PowerPoint VBAの基本はバッチリです!

これからも、一つ一つのオブジェクト、一つ一つのプロパティやメソッドが持つ意味を深く理解しようと努めることで、あなたは伝説的な業務自動化エンジニアへの道を着実に歩んでいくことでしょう。私も引き続き、皆さんのスキルアップを全力で応援します!

何か困ったことがあれば、いつでも質問してくださいね。

それでは、また次回の記事でお会いしましょう!

—

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