【VBA】マイフォルダ(デスクトップ、ドキュメント、ダウンロード)のフルパスを取得する方法

VBA

Excel VBA 一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

 

前回

【VBA】Excel PDF出力する方法 (1行のスクリプトでOK!)
今回は、PDF出力してみましょう。 といっても、とても簡単です。 スクリプト的には1行で終わりです。

PDFファイルを出力したのですが、
その際に、パスを指定する場合は、フルパスで指定する必要があります。

なので今回は、「デスクトップ」、「ダウンロード」、「ドキュメント」の
フォルダをフルパスで取得する方法です。

  • デスクトップ
CreateObject("WScript.Shell").SpecialFolders("desktop")

で、「デスクトップ」が取得できます。

Sub GetMyFullPath()

Dim upath As String

'デスクトップ
upath = CreateObject("WScript.Shell").SpecialFolders("desktop")
Debug.Print upath

End Sub

 

同様に「ドキュメント」も取得できます。

'ドキュメント
upath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
Debug.Print upath

ただ、「ダウンロード」は、

CreateObject("WScript.Shell").SpecialFolders("Downloads")

としても取得できません。

なので、一旦「ドキュメント」のパスを取得し、パス内の「Documents」の部分を
「Downloads」(ダウンロード)に置換することで、「ドキュメント」の
パスに変更します。↓

    'ダウンロード
    upath = Replace(upath, "\Documents", "\Downloads", 1, 1)
    Debug.Print upath

 

例) デスクトップ、ドキュメント、ダウンロード パスの取得

Sub GetMyFullPath()

Dim upath As String

'デスクトップ
upath = CreateObject("WScript.Shell").SpecialFolders("desktop")
Debug.Print upath


'ドキュメント
upath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
Debug.Print upath


'ダウンロード
upath = Replace(upath, "\Documents", "\Downloads", 1, 1)
Debug.Print upath

End Sub

 

実行結果

 

ついでに、3つのパスのいずれかを取得する処理を作ってみました。

とりあえず、デスクトップのフルパスを取得し後は、置換しています。

 

デスクトップ、ドキュメント、ダウンロードフォルダのフルパス取得ルーチン

GetMyPath()を呼び出す際に、0(デスクトップ)、1(ドキュメント)、2(ダウンロード)を
指定すればOKです。

Const ID_DESKTOP = 0 'デスクトップ
Const ID_DOCUMENT = 1 'ドキュメント
Const ID_DOWNLOAD = 2 'ダウンロード

'テスト用の呼び元
Sub sampleGetPath()
'デスクトップのフルパスを取得
Debug.Print GetMyPath(ID_DESKTOP)

'ドキュメントフォルダのフルパスを取得
Debug.Print GetMyPath(ID_DOCUMENT)

'ダウンロードフォルダのフルパスを取得
Debug.Print GetMyPath(ID_DOWNLOAD)

End Sub

'-------------------------------------------------------
'フルパスを取得する
'id
'ID_DESKTOP デスクトップ
'ID_DOCUMENT ドキュメント
'ID_DOWNLOAD ダウンロード
'戻り値 指定されたIDのフルパス(c:\
'-------------------------------------------------------
Function GetMyPath(id)

Dim upath As String

'とりあえずデスクトップで作成する
upath = CreateObject("WScript.Shell").SpecialFolders("desktop")

'ドキュメントとダウンロードは置換する
Select Case id
Case ID_DOCUMENT
upath = Replace(upath, "\Desktop", "\Document", 1, 1)

Case ID_DOWNLOAD
upath = Replace(upath, "\Desktop", "\Downloads", 1, 1)
End Select

GetMyPath = upath

End Function

 

実行

では、そのままExcelのコードに貼り付けて実行してみましょう。

※開発タブが表示されない場合はこちら↓

Excel 「開発」タブを表示させる方法(ボタンの表示)
ExcelでVBAスクリプトやボタンを表示させるための「開発タブ」を表示させる方法です。

 

 

 

実行結果

sampleGetPathの実行結果

正しく取得しています。

 

最後までご覧いただきありがとうございます。

つぎはこちら

Excel バージョンを確認する方法(2019)
Excel一覧 前回 Excelのバージョンを確認する方法です。(2019) 確認方法 ①「ファイル」をクリックする ①「アカウント」をクリックする ②画面右側にバージョンが表示される 以上です。 最後までご覧いただきありがとうございます。...

Excel VBA 一覧

コメント

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