【入門編】【実務中級者向け】FSOで取得したファイルツリー構造をCSS付きの対話型HTMLレポートとして自動生成するツール – VBScript (Visual Basic Scripting Edition)解析バイブル

スポンサーリンク

VBScript FSOでファイルツリーを美しく可視化!対話型HTMLレポート生成術

皆さん、こんにちは!業務自動化の最前線で長年VBScriptと向き合ってきたチーフアーキテクトです。日々の業務、お疲れ様です。ファイル管理、フォルダ整理、頭を悩ませることはありませんか?「あのファイル、どこに置いたっけ?」「このフォルダ、こんなに大きくなってたのか!」なんて経験、きっと誰にでもあるはずです。

今日は、そんなあなたのファイル管理の悩みを解決する、とっておきのVBScriptツールをご紹介します。Windows環境の自動化で長らく愛されてきたVBScriptの真骨頂、「FileSystemObject (FSO)」を駆使して、指定したフォルダ配下のファイル構成を、まるでブラウザでウェブサイトを見るかのように、美しく、そして対話的に表示するHTMLレポートを自動生成する方法を、基礎から本質までじっくりと解説していきます。

「マクロの記録」から一歩踏み出し、プログラムとして動く「道具」を自分の手で作ってみたい。そんなあなたの想いを、私が全力でサポートします。

—

目次

1. なぜ今、VBScriptとFSOなのか?
2. FileSystemObject (FSO) の心髄に触れる

  • FSOオブジェクトの生成とライフサイクル
  • フォルダ・ファイルの取得とプロパティ

3. 再帰処理:複雑なツリー構造を紐解く鍵

  • 再帰関数の考え方を図解で理解する
  • コレクションとループ処理

4. HTMLレポート構築の妙技

  • VBScriptでHTMLを生成する基本
  • CSSとJavaScriptで魅せる対話性
  • TextStreamオブジェクトによるファイル出力の極意

5. 【実践コード】CSS付き対話型HTMLファイルツリーレポートの自動生成

  • 全体のコードと詳細な解説
  • パフォーマンスとエラーハンドリングの視点

6. さらなる高みへ:応用と発展的考察
7. まとめ:VBScriptの基本はバッチリです!

—

1. なぜ今、VBScriptとFSOなのか?

「VBScriptって古いんじゃないの?」そう思われる方もいるかもしれません。確かにPowerShellやPythonのようなモダンなスクリプト言語が台頭しています。しかし、Windows環境においては、VBScriptは今もなお「手軽で強力な自動化ツール」としての地位を確立しています。

  • 特別なインストール不要: Windowsに標準搭載されているため、すぐに実行できます。
  • 学習コストが低い: 文法がシンプルで、Visual Basic系の言語に慣れていればすぐに習得できます。
  • COMオブジェクトとの親和性: `FileSystemObject`のように、Windowsが提供する様々なCOMオブジェクトを簡単に操作できるため、システムレベルの自動化に非常に強いのです。

特に`FileSystemObject (FSO)`は、ファイルやフォルダの作成、削除、移動、コピー、そしてプロパティの取得といった、ファイルシステムに関するあらゆる操作を一手に引き受ける強力なオブジェクトです。日々の業務で発生する「ファイル操作」の多くは、FSOを使えば自動化できると言っても過言ではありません。

今回は、FSOのその深淵なる力を借りて、散らばりがちなファイル情報を視覚的に整理する「HTMLレポート」を生成してみましょう。

2. FileSystemObject (FSO) の心髄に触れる

FSOを使いこなすには、そのオブジェクトの「生成」と「ライフサイクル」、そして「プロパティ」の扱い方を理解することが肝要です。

FSOオブジェクトの生成とライフサイクル

VBScriptでFSOを使うための最初のステップは、`FileSystemObject`オブジェクトをインスタンス化することです。

‘ FileSystemObjectを生成します。
Dim objFSO
Set objFSO = CreateObject(“Scripting.FileSystemObject”)

ここで重要なのが、`Set`キーワードです。VBScriptにおいて、オブジェクトを扱う際には必ず`Set`を使います。これは、`objFSO`という変数に、`CreateObject(“Scripting.FileSystemObject”)`が生成したオブジェクトそのものへの「参照」を代入していることを意味します。

そして、オブジェクトを使い終えたら、必ず解放してあげましょう。

‘ オブジェクトの参照を解放します。
Set objFSO = Nothing

「`Set Nothing`って、おまじないみたいなもの?」と聞かれることがありますが、これは非常に重要なプロセスです。`CreateObject`で生成されたCOMオブジェクトは、システムリソースを消費します。不要になったオブジェクトへの参照を`Nothing`に設定することで、VBScriptの実行環境は「このオブジェクトはもう使わない」と判断し、適切にリソースを解放する準備ができます。特に大量のファイルやフォルダを扱うような処理では、この`Set Nothing`を怠るとメモリリークやパフォーマンス低下の原因となり得ます。

先輩からのアドバイス: オブジェクト指向プログラミングにおける「ガベージコレクション」の概念に似ていますが、VBScriptでは明示的に`Set Nothing`とすることで、より確実にリソース解放の意図を伝えることができます。大規模なスクリプトでは、この習慣が安定性とパフォーマンスを大きく左右しますよ。

フォルダ・ファイルの取得とプロパティ

FSOオブジェクトを取得したら、いよいよファイルシステムを操作できます。

‘ ターゲットフォルダのパスを指定します
Const TARGET_FOLDER_PATH = “C:\YourTargetFolder” ‘ ここを実際に調べたいフォルダパスに変更してください

‘ FSOオブジェクトを生成
Dim objFSO
Set objFSO = CreateObject(“Scripting.FileSystemObject”)

‘ 指定したフォルダのオブジェクトを取得
Dim objFolder
If objFSO.FolderExists(TARGET_FOLDER_PATH) Then
Set objFolder = objFSO.GetFolder(TARGET_FOLDER_PATH)
WScript.Echo “フォルダ名: ” & objFolder.Name
WScript.Echo “フルパス: ” & objFolder.Path
WScript.Echo “サイズ: ” & FormatNumber(objFolder.Size, 0) & ” バイト” ‘ フォルダ内の全ファイル合計サイズ
WScript.Echo “作成日時: ” & objFolder.DateCreated
WScript.Echo “最終更新日時: ” & objFolder.DateLastModified
WScript.Echo “ファイル数: ” & objFolder.Files.Count
WScript.Echo “サブフォルダ数: ” & objFolder.SubFolders.Count
Else
WScript.Echo “指定されたフォルダは存在しません。”
End If

‘ オブジェクトの参照を解放
Set objFolder = Nothing
Set objFSO = Nothing

`GetFolder`メソッドで`Folder`オブジェクトを取得し、その`Name`, `Path`, `Size`, `DateLastModified`などのプロパティにアクセスしていますね。`Files`コレクションや`SubFolders`コレクションを通じて、そのフォルダに含まれるファイルやサブフォルダのリストも取得できます。

これが、FSOが提供する基本的な情報の取得方法です。しかし、私たちが本当に知りたいのは、フォルダの「中」がどうなっているか、階層構造全体ですよね?そこで登場するのが「再帰処理」です。

3. 再帰処理:複雑なツリー構造を紐解く鍵

ファイルシステムは、フォルダの中にさらにフォルダがあり、その中にまたフォルダがある、という階層的な構造をしています。この複雑な構造を効率よくたどるために、「再帰処理」というプログラミングテクニックを使います。

再帰関数の考え方を図解で理解する

再帰処理とは、「関数(またはサブルーチン)が、自分自身を呼び出す」という仕組みです。

例えるなら、あなたは図書館の司書で、本の棚(フォルダ)を整理しています。
1. 「この棚を整理する」 というタスクを受けます。
2. 棚にある本(ファイル)をリストアップします。
3. 棚の中に、さらに小さな棚(サブフォルダ)があれば、その小さな棚に対して 「この棚を整理する」 という同じタスクを依頼します。
4. 小さな棚の整理が終わったら、自分の棚の整理を続けます。
5. すべての本と小さな棚の整理が終わったら、タスク完了です。

この「自分自身に同じタスクを依頼する」というのが再帰です。

[Start]
→ フォルダAを処理 (ProcessFolder “C:\FolderA”)
→ ファイル1を処理
→ フォルダA-1を処理 (ProcessFolder “C:\FolderA\FolderA-1”)
→ ファイルA-1-aを処理
→ フォルダA-1-1を処理 (ProcessFolder “C:\FolderA\FolderA-1\FolderA-1-1”)
→ ファイルA-1-1-xを処理
→ (サブフォルダがないので終了)
→ (フォルダA-1-1の処理が終わり、フォルダA-1の処理に戻る)
→ (フォルダA-1の処理が終わり、フォルダAの処理に戻る)
→ ファイル2を処理
→ (フォルダAの処理が終了)
[End]

コレクションとループ処理

VBScriptで再帰処理を行う際、FSOの`Folders`コレクションと`Files`コレクションが非常に役立ちます。

‘ 指定したフォルダ内のファイルとサブフォルダを列挙する例

Sub ListContents(objCurrentFolder)
‘ フォルダ内のファイルを列挙
Dim objFile
For Each objFile In objCurrentFolder.Files
WScript.Echo ” ファイル: ” & objFile.Name & ” (サイズ: ” & objFile.Size & ” バイト)”
Next

‘ フォルダ内のサブフォルダを列挙(そして再帰的に処理)
Dim objSubFolder
For Each objSubFolder In objCurrentFolder.SubFolders
WScript.Echo “サブフォルダ: ” & objSubFolder.Name
‘ 自分自身 (ListContents) を呼び出す!これが再帰です。
ListContents objSubFolder
Next
End Sub

‘ 実行例
Dim objFSO_Rec, objTargetFolder_Rec
Set objFSO_Rec = CreateObject(“Scripting.FileSystemObject”)
Set objTargetFolder_Rec = objFSO_Rec.GetFolder(“C:\Temp”) ‘ 調べたいフォルダを指定
ListContents objTargetFolder_Rec

Set objTargetFolder_Rec = Nothing
Set objFSO_Rec = Nothing

この`ListContents`サブルーチンが、再帰処理の核となります。自身を呼び出すことで、どんなに深い階層のフォルダ構造でも、漏れなく処理することができます。

先輩からのアドバイス: 再帰処理は強力ですが、あまりにも階層が深すぎると「スタックオーバーフロー」というエラーを引き起こす可能性があります。これは、関数が自分自身を呼び出すたびに、その時点の状態をメモリに積み重ねていくためです。通常のファイルシステムでこの問題に遭遇することは稀ですが、大規模なシステムや特殊なディレクトリ構造を扱う場合は、この点も頭の片隅に置いておきましょう。

4. HTMLレポート構築の妙技

VBScriptは、GUIを持つアプリケーションを作ることは得意ではありませんが、テキストファイルを生成することは大の得意です。HTMLファイルもただのテキストファイルですから、VBScriptでHTMLのコードを文字列として生成し、ファイルに書き出すことで、見栄えの良いレポートを作成できます。

VBScriptでHTMLを生成する基本

基本的なHTMLタグを文字列として連結していくだけです。

Dim strHtmlOutput
strHtmlOutput = “” & VbCrLf
strHtmlOutput = strHtmlOutput & “” & VbCrLf
strHtmlOutput = strHtmlOutput & “” & VbCrLf
strHtmlOutput = strHtmlOutput & “ファイルツリーレポート” & VbCrLf
strHtmlOutput = strHtmlOutput & “” & VbCrLf
strHtmlOutput = strHtmlOutput & “” & VbCrLf
strHtmlOutput = strHtmlOutput & “

私のファイルツリー

” & VbCrLf
strHtmlOutput = strHtmlOutput & “

    ” & VbCrLf
    strHtmlOutput = strHtmlOutput & ”

  • フォルダ1
  • ” & VbCrLf
    strHtmlOutput = strHtmlOutput & ”

  • フォルダ2
  • ” & VbCrLf
    strHtmlOutput = strHtmlOutput & “

” & VbCrLf
strHtmlOutput = strHtmlOutput & “” & VbCrLf
strHtmlOutput = strHtmlOutput & “” & VbCrLf

WScript.Echo strHtmlOutput ‘ コンソールに出力

`& VbCrLf`は、改行コードを挿入するためのものです。これにより、生成されるHTMLコードが読みやすくなります。VBScriptの文字列連結は`&`演算子で行います。大量の文字列連結はパフォーマンスに影響を与えることがありますが、VBScriptではこれが最も効率的な方法です。他の言語にある`StringBuilder`のような最適化されたクラスは、VBScriptには標準でありませんから、この方法で進めます。

CSSとJavaScriptで魅せる対話性

ただのテキストの羅列では味気ないですよね。CSSとJavaScriptを組み合わせることで、レポートに「デザイン」と「対話性」をもたせることができます。

  • CSS (Cascading Style Sheets):
  • 文字の色、サイズ、フォント。
  • 要素の配置(インデント)。
  • マウスオーバー時のスタイル変更(ホバー効果)。
  • フォルダアイコンの表示など、視覚的な情報を豊かにします。
  • JavaScript:
  • フォルダ名のクリックで、その中身(サブフォルダやファイル)を表示/非表示に切り替える「トグル」機能。
  • これにより、必要な情報だけを展開して見ることができ、レポートの可読性が格段に向上します。

これらのコードは、HTMLの``タグ内や`" & VbCrLf & _
"" & VbCrLf & _
"" & VbCrLf & _
"

" & REPORT_TITLE & "

" & VbCrLf & _
"

生成日時: " & Now() & "

" & VbCrLf & _
"

クリックでフォルダを展開/折りたたみできます。

" & VbCrLf
BuildHtmlHeader = strHeader
End Function

'-------------------------------------------------------------------------------
' Function: BuildHtmlFooter
' 目的: HTMLレポートのフッタ部分 (body終了, html終了) を生成します。
' 戻り値: HTMLフッタ文字列
'-------------------------------------------------------------------------------
Function BuildHtmlFooter()
Dim strFooter
strFooter = "" & VbCrLf & _
"" & VbCrLf
BuildHtmlFooter = strFooter
End Function

'-------------------------------------------------------------------------------
' Sub: ProcessFolder
' 目的: 指定されたフォルダとそのサブフォルダ、ファイルを再帰的に処理し、
' HTMLコンテンツをstrHtmlReportContentに追記します。
' 引数:
' objFolder - 処理対象のFolderオブジェクト
' intIndentLevel - 現在のインデントレベル (表示用のCSSクラスに反映)
'-------------------------------------------------------------------------------
Sub ProcessFolder(objFolder, intIndentLevel)
' フォルダのHTML要素を開始 (最初は展開状態)
strHtmlReportContent = strHtmlReportContent & "

  • " & VbCrLf
    strHtmlReportContent = strHtmlReportContent & "

    " & VbCrLf
    ' フォルダアイコンと名前、サイズ、更新日時を表示
    strHtmlReportContent = strHtmlReportContent & " ▼ " & objFolder.Name & "" & VbCrLf
    strHtmlReportContent = strHtmlReportContent & " (" & FormatBytes(objFolder.Size) & " / 更新: " & FormatDateTime(objFolder.DateLastModified, vbShortDate) & ")" & VbCrLf
    strHtmlReportContent = strHtmlReportContent & "

    " & VbCrLf

    ' サブアイテム(サブフォルダとファイル)用のリストを開始
    ' デフォルトでは非表示にする場合は、ここに class="hidden" を追加
    strHtmlReportContent = strHtmlReportContent & "

      " & VbCrLf ' 初期状態は折りたたまれている

      ' フォルダ内のファイルを列挙し、HTMLコンテンツに追記します
      Dim objFile
      For Each objFile In objFolder.Files
      ' ファイルのHTML要素
      strHtmlReportContent = strHtmlReportContent & "

    • " & VbCrLf
      strHtmlReportContent = strHtmlReportContent & "

      " & VbCrLf
      strHtmlReportContent = strHtmlReportContent & " 📄 " & objFile.Name & "" & VbCrLf
      strHtmlReportContent = strHtmlReportContent & " (" & FormatBytes(objFile.Size) & " / 更新: " & FormatDateTime(objFile.DateLastModified, vbShortDate) & ")" & VbCrLf
      strHtmlReportContent = strHtmlReportContent & "

      " & VbCrLf
      strHtmlReportContent = strHtmlReportContent & "

    • " & VbCrLf
      Next

      ' フォルダ内のサブフォルダを列挙し、再帰的に処理します
      Dim objSubFolder
      For Each objSubFolder In objFolder.SubFolders
      ' エラーハンドリング: アクセス権がないフォルダはスキップ
      On Error Resume Next
      If IsEmpty(objSubFolder.Path) Then ' objSubFolder.Pathが空になることでアクセスエラーを検知
      ' アクセスできないフォルダはログに記録するか、HTMLにエラー表示
      strHtmlReportContent = strHtmlReportContent & "

    • " & VbCrLf
      strHtmlReportContent = strHtmlReportContent & "

      " & VbCrLf
      strHtmlReportContent = strHtmlReportContent & " 🚫 [アクセス拒否] " & objSubFolder.Name & "" & VbCrLf
      strHtmlReportContent = strHtmlReportContent & "

      " & VbCrLf
      strHtmlReportContent = strHtmlReportContent & "

    • " & VbCrLf
      Err.Clear ' エラーをクリアして処理を続行
      On Error GoTo 0
      Continue For ' 次のサブフォルダへ
      End If
      On Error GoTo 0 ' エラーハンドリングを一時的に解除

      ' 自分自身 (ProcessFolder) を呼び出す!これが再帰です。
      Call ProcessFolder(objSubFolder, intIndentLevel + 1)
      Next

      ' サブアイテムリストとフォルダのHTML要素を閉じます
      strHtmlReportContent = strHtmlReportContent & "

    " & VbCrLf
    strHtmlReportContent = strHtmlReportContent & "

  • " & VbCrLf

    ' オブジェクトの参照を解放します (これはループ内で頻繁に発生するため、
    ' objFolder自体は呼び出し元で解放されるべきですが、
    ' 各objFile/objSubFolderはループのたびに新しい参照を持つため、
    ' ここで明示的にNothingにすることはできません。
    ' VBScriptのガベージコレクタが適切に処理します。)
    ' Set objFile = Nothing ' VBScriptではFor Eachループ内での個別のNothingは不要
    ' Set objSubFolder = Nothing ' VBScriptではFor Eachループ内での個別のNothingは不要
    End Sub

    '-------------------------------------------------------------------------------
    ' Function: FormatBytes
    ' 目的: バイト数を読みやすい形式 (KB, MB, GB) に変換します。
    ' 引数:
    ' lBytes - 変換するバイト数
    ' 戻り値: フォーマットされた文字列
    '-------------------------------------------------------------------------------
    Function FormatBytes(lBytes)
    Const KB = 1024
    Const MB = KB 1024
    Const GB = MB 1024

    If lBytes >= GB Then
    FormatBytes = FormatNumber(lBytes / GB, 2) & " GB"
    ElseIf lBytes >= MB Then
    FormatBytes = FormatNumber(lBytes / MB, 2) & " MB"
    ElseIf lBytes >= KB Then
    FormatBytes = FormatNumber(lBytes / KB, 2) & " KB"
    Else
    FormatBytes = FormatNumber(lBytes, 0) & " B"
    End If
    End Function

    '-------------------------------------------------------------------------------
    ' Sub: WriteHtmlFile
    ' 目的: 指定されたファイル名でHTML文字列をファイルに書き込みます。
    ' 引数:
    ' strFileName - 出力ファイル名
    ' strContent - 書き込むHTMLコンテンツ
    '-------------------------------------------------------------------------------
    Sub WriteHtmlFile(strFileName, strContent)
    Dim objTextStream
    ' CreateTextFileの第三引数をTrueにすることでUnicode (UTF-16 LE) で出力します。
    ' HTML内のと合わせて、多くのブラウザで正しく表示されます。
    Set objTextStream = objFSO.CreateTextFile(strFileName, True, True) ' 上書き許可, Unicode
    objTextStream.Write strContent
    objTextStream.Close
    Set objTextStream = Nothing
    End Sub

    パフォーマンスとエラーハンドリングの視点

    • `Option Explicit`: これは必須です。変数名のタイプミスによるバグを未然に防ぎ、堅牢なコードを書くための第一歩です。
    • FSOオブジェクトの単一化: `objFSO = CreateObject("Scripting.FileSystemObject")` は`Main`サブルーチンの冒頭で一度だけ実行しています。再帰関数`ProcessFolder`内で何度も`CreateObject`を呼び出すと、そのたびにCOMオブジェクトの生成と破棄が行われ、パフォーマンスが著しく低下します。一度生成したFSOオブジェクトをグローバル変数として共有することで、このオーバーヘッドを回避しています。これは「オブジェクトのライフサイクルとパフォーマンスの重み」を理解しているからこその設計です。
    • 文字列連結の効率: VBScriptでは`&`演算子による文字列連結が最も一般的で、`strHtmlReportContent = strHtmlReportContent & ...` の形でHTMLコンテンツを逐次構築しています。大量のコンテンツの場合、これはPythonの`join`や.NETの`StringBuilder`ほど効率的ではありませんが、VBScriptの制約の中では実用的なアプローチです。
    • エラーハンドリング (`On Error Resume Next`): `ProcessFolder`内で、アクセス権のないフォルダに遭遇した場合を想定して`On Error Resume Next`を使用しています。これにより、スクリプトが途中で停止することなく、エラーメッセージを埋め込んだり、スキップしたりして処理を続行できます。ただし、`On Error Resume Next`は諸刃の剣です。必要な場所でのみ使い、エラー処理が終わったらすぐに`On Error GoTo 0`で元に戻すのが鉄則です。
    • CSS変数 (`--indent-level`): CSSのカスタムプロパティ(変数)を使って、インデントレベルに応じた`padding-left`を動的に計算しています。これはモダンなCSSのテクニックで、コードの柔軟性を高めています。
    • JavaScriptによる対話性: `DOMContentLoaded`イベントリスナーで、ページ読み込み後にJavaScriptが実行されるようにしています。`querySelectorAll`と`forEach`を使って、すべてのフォルダ名要素にクリックイベントリスナーを登録し、クリック時にサブリストの表示/非表示を切り替える`classList.toggle('hidden')`を実行しています。アイコンの変更も実装し、ユーザー体験を向上させています。

    これで、指定したフォルダの構造が、ブラウザで美しく、そして対話的に表示されるHTMLレポートが手に入ります。

    6. さらなる高みへ:応用と発展的考察

    このツールをベースに、あなたの業務に合わせてさらに強力な自動化を実現できます。

    • レポートのカスタマイズ:
    • 特定の拡張子のファイルのみを表示するフィルタ機能を追加する。
    • サイズが一定以上のファイルだけを強調表示する。
    • 特定のキーワードを含むファイル名やフォルダ名を検索する機能。
    • Excelとの連携:
    • ファイルリストをHTMLだけでなく、Excelファイルにも出力し、データ分析に活用する。
    • Excel VBAからこのVBScriptを呼び出すことも可能です。
    • スケジュール実行:
    • Windowsのタスクスケジューラに登録し、毎日、毎週、あるいは特定のイベント発生時に自動的にレポートを生成するように設定する。これにより、常に最新のファイル構成を把握できます。
    • FSOの限界と代替手段:
    • `FileSystemObject`は非常に便利ですが、一部の高度なファイル操作(シンボリックリンクの作成、ACLの変更など)には対応していません。また、巨大なファイルシステムを扱う場合、パフォーマンスが問題となることもあります。
    • より高度な自動化や大規模な処理が必要な場合は、PowerShellや.NET Framework (C# / VB.NET) の利用を検討する価値があります。これらの言語は、より強力なファイルシステムAPI(`System.IO`名前空間)を提供し、非同期処理やマルチスレッド処理など、パフォーマンス最適化のための機能が充実しています。VBScriptは手軽さで勝りますが、その「極限」を知ることで、次の一歩が見えてきます。

    7. まとめ:VBScriptの基本はバッチリです!

    今日は、VBScriptの`FileSystemObject`を深く掘り下げ、再帰処理、HTML生成、そしてCSSとJavaScriptを組み合わせた対話型レポートの作成まで、一歩踏み込んだ自動化のテクニックを学びました。

    • FSOの強力さ: ファイルシステムを自在に操るための基本オブジェクト。
    • オブジェクトのライフサイクル: `Set Nothing`によるリソース解放の重要性。
    • 再帰処理: 複雑な階層構造を効率的にたどるための必須テクニック。
    • HTML生成: VBScriptで視覚的なレポートを作成する応用力。
    • CSSとJS: レポートの見た目と機能性を向上させる。

    このレポートツールは、あなたのデジタルな作業空間を整理し、必要な情報を素早く見つける手助けとなるでしょう。そして何より、あなた自身のプログラミングスキルを確実に引き上げる一歩となったはずです。

    「なぜこう書くのか」「何が起こっているのか」を理解しながらコードを読み解く力こそが、真のエンジニアリングの基礎です。今回学んだ知識と経験は、VBScriptだけでなく、他のプログラミング言語や自動化ツールを学ぶ上でも必ず役立ちます。

    ここをクリアすれば、VBScriptの基本はバッチリですよ! これからも、あなたの業務自動化の道を応援しています。何か困ったことがあれば、いつでも気軽に尋ねてくださいね。

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