【Wordマクロ】フォルダパスからサブフォルダ名を取得する | みんなのワードマクロ

みんなのワードマクロ

ワードマクロで、文書作成とオフィス事務を効率化!!

「【Wordマクロ】フォルダパスからフォルダ名を取得する 」、「【Wordマクロ】フォルダパスからフォルダ名を取得する(その2) 、「【Wordマクロ】フォルダパスからフォルダ名を取得する(その3) 」と続きました関連記事です。

今回のブログ記事は、「フォルダパスからサブフォルダ名を取得する」です。

今までの記事の流れの中できぬあささん から教えてもらったので関連記事(笑)。

忘れないようにメモをしておきます。



▼このマクロでできること

フォルダパスから、サブフォルダ名を取得します。


以下のようにデスクトップ上に「WordVBA」というフォルダがあります。

その中にサブフォルダが3つあります。

この「WordVBA」内のサブフォルダを探します。

みんなのワードマクロ


マクロを実行します。

みんなのワードマクロ

このようになります。




▼マクロの解説

一般的には、Dir関数を用いますが、本ブログ記事では、WordBasicを使います。
なぜなら、きぬあささんに教えてもらったから。かなりマニアックな技です(笑)。


Dir関数の方法は、Excel VBAの例がネット上にたくさん紹介されていますね。

Dir関数でサブフォルダを取得する (Office Tanaka)

上記サイトのようにやれば完璧ですね。こちらも参考にしてみてください。

今回のブログ記事では、Word 6.0 および Word 95 時代に用いられていたWordBasicを使った方法を紹介します。


さて、WordBasicの記述方法です。

VBAで使う場合には、WordBasicと書いて、その後に命令文を書きます。


WordBasic.CountDirectories(フォルダパス)

指定したフォルダ内のサブフォルダの数を数えます。


WordBasic.GetDirectory(フォルダパス, i)

サブフォルダのフォルダ名を取得します。

i は、サブフォルダに付けられた番号です。


For...Nextステートメント
でループでサブフォルダ名を取得しています。



▼マクロ

Sub フォルダパスからサブフォルダ名を取得()

 Dim i As Long
 Dim myFolderPath As String 'フォルダのパス
 Dim mySubFolderName As String 'サブフォルダ名
 
 myFolderPath = "D:\Users\新田 順也\Desktop\WordVBA"
 
 For i = 1 To WordBasic.CountDirectories(myFolderPath)
  mySubFolderName = mySubFolderName & vbCr & _
       WordBasic.GetDirectory(myFolderPath, i)
 Next

 MsgBox mySubFolderName
 
End Sub




▼WordBasicとは?

Word 97以降は、プログラミング言語としてVBAが使われていますが、それ以前にWordではWordBasicがプログラミング言語として使われていました。

WordBasicでできることは、たいてい今のWord VBAで実行できるのであまり使う必要はないのですが、いくつかWordBasicでしかできないものがあります。

例えば、WordBasic.SortArray や、WordBasic.CopyFileA です。

詳細は、Useful WordBasic commands that have no VBA equivalent でご確認ください。




▼関連記事

Useful WordBasic commands that have no VBA equivalent

Visual Basic Equivalents A

【Wordマクロ】フォルダパスからフォルダ名を取得する

【Wordマクロ】フォルダパスからフォルダ名を取得する(その2)

【Wordマクロ】フォルダパスからフォルダ名を取得する(その3)