VBA共通:デスクトップフォルダやマイドキュメントフォルダなどWindowsの特殊フォルダのパスをVBAで取得するサンプルプログラム

VBA共通:デスクトップフォルダやマイドキュメントフォルダなどWindowsの特殊フォルダのパスをVBAで取得するサンプルプログラム

マイドキュメントフォルダやデスクトップフォルダなどログインユーザーによってパスが変わるフォルダやWindowsがセットアップ時に作成するSystemフォルダなどの特殊なフォルダのパスをVBAで取得するサンプルプログラムを覚書。

紹介するサンプルプログラムは、ExcelのVBAでもAccessのVBAでも使用できます。

Windowsの特殊フォルダのパスについて

Windowsの特殊フォルダのパスは、ログオンしているユーザーやWindowsをセットアップした際の指定によって異なります。

例えば、Windowsをインストールするフォルダをデフォルトから変更していた場合、”System32″フォルダのパスは、”C:\Windows\System32″ではなくなってしまいます。

またマイドキュメントやデスクトップフォルダは、ログオンしているユーザーによってパス文字列が変わってしまいます。

デスクトップフォルダであれば、”C:\Documents and Settings\ログオンユーザー名\デスクトップ”になるため、ログオンしているユーザー名がわからないと正確にパスを指定することができません。

その他テンポラリファイルを保存するフォルダなどは、Windowsの環境変数の指定によって決まったりもするので、固定した文字列を指定することはできません。

上記の特殊フォルダのパス文字列をVBAで取得するサンプルプログラムを紹介します。

特殊フォルダのパスを取得するサンプルプログラム概要

VBAでデスクトップフォルダやマイドキュメントなどの特殊フォルダのパスを取得するには、Windowsの”Windows Script Host”オブジェクトを使用します。

また、WindowsフォルダやSystem32フォルダ、テンポラリフォルダ等については、”FileSystemObject”オブジェクトを使用します。

デスクトップフォルダやマイドキュメントなどの特殊フォルダのパスを取得するサンプルプログラム

以下に”Windows Script Host”オブジェクトを使用してデスクトップフォルダやマイドキュメントなどの特殊フォルダのパスをVBAで取得するサンプルプログラムを以下に記載します。

ExcelのVBAで作成する場合でもAccessのVBAの場合でも標準モジュールに記載してください。

SpecialFoldersの()内に”取得したい特殊フォルダ名”を指定します。

指定できる特殊フォルダ名と取得できるフォルダについて

SpecialFoldersの()内に指定できる特殊フォルダ名と取得できるフォルダの一覧を以下に記載します。

特殊フォルダ名取得できるパス
Desktopデスクトップフォルダ
Favoritesお気に入りフォルダ
Fontsフォントフォルダ
MyDocumentsマイドキュメントフォルダ
Programsプログラムフォルダ
Recent最近開いたファイルフォルダ
SendTo送るフォルダ
StartMenuスタートアップメニューフォルダ
StartUpスタートアップフォルダ

WindowsフォルダやSystem32フォルダ、テンポラリフォルダのパスを取得するサンプルプログラム

以下に”FileSystemObject”を使用してWindowsフォルダやSystem32フォルダ、テンポラリフォルダのパスを取得するサンプルプログラムを以下に記載します。

ExcelのVBAで作成する場合でもAccessのVBAの場合でも標準モジュールに記載してください。

GetSpecialFolderの()内に取得したい特殊フォルダを表す数値を指定します。

指定できる数値と取得できるフォルダについて

GetSpecialFolderの()内に指定できる数値と指定した数値に対応する特殊フォルダの一覧を以下に記載します。

指定できる数値取得できるフォルダ
0Windowsフォルダ
1System32フォルダ
2Temporaryフォルダ