「【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)