【VBA】PCが変わってもエラーにならない!デスクトップやマイドキュメントのパスを自動取得する方法

【業務効率化】VBA
スポンサーリンク

「よし!完璧な自動化ツールができたぞ!」

そう意気揚々と、隣の席の同僚にツールを渡した1分後。

ごめん、実行したらエラーが出るんだけど…」と言われて、ガッカリしたことはありませんか?

原因の9割は、これです。

C:\Users\yamada-taro\Desktop\...

コードの中に「自分の名前(ユーザー名)」を直接書いてしまっているんです。これでは、佐藤さんのPCでも、田中さんのPCでも動きません。

そこで今回は、そんな「自分専用ツール」を卒業し、誰のPCでもボタンひとつで快適に動く「汎用性の高いツール」へと変身させる方法をご紹介します。

【業務効率化】VBAの記事を見る 

「WScript.Shell」はOSの情報を教えてくれる優秀なコンシェルジュ

Excel VBAには、「WScript.Shell(ダブル・スクリプト・シェル)」という、Windows(OS)の情報を教えてくれるコンシェルジュのような便利な仕組みが用意されています。

「このPCのデスクトップはどこにある?」と問いかけるだけで、ログインしているユーザー名に応じて、瞬時に正しい場所(パス)を教えてくれます。

ちなみに、このような操作を専門用語では「特殊フォルダの取得」と呼びます。

コピペでOK!パスを自動取得する基本コード

さっそく、そのまま使えるコードを紹介します。

Sub GetSpecialFolderPath()
    ' --- 1. WScript.Shellを呼び出す ---
    Dim wsh As Object
    Set wsh = CreateObject("WScript.Shell")
   
    ' --- 2. デスクトップのパスを取得して変数に入れる ---
    Dim desktopPath As String
    desktopPath = wsh.SpecialFolders("Desktop")
   
    ' --- 3. マイドキュメントのパスを取得して変数に入れる ---
    Dim documentsPath As String
    documentsPath = wsh.SpecialFolders("MyDocuments")
   
    ' --- 4. 結果をメッセージボックスで表示(確認用) ---
    MsgBox "デスクトップはここです!:" & vbCrLf & desktopPath & vbCrLf & vbCrLf & _
          "マイドキュメントはここです!:" & vbCrLf & documentsPath
         
    ' --- 5. 後片付け ---
    Set wsh = Nothing
End Sub

現場で役立つ実践例:デスクトップへファイルを自動保存する

パスを取得するだけでなく、実際の業務に応用してみましょう。
ここでは「取得したデスクトップのパスへファイルを保存する」コードをご紹介します。

Sub SaveToDesktop()
    Dim wsh As Object
    Set wsh = CreateObject("WScript.Shell")
   
    ' デスクトップの場所を取得
    Dim dPath As String
    dPath = wsh.SpecialFolders("Desktop")
   
    ' 保存するファイル名を作成(例:売上報告書.xlsx)
    Dim fileName As String
    fileName = dPath & "\売上報告書.xlsx"
   
    ' 今開いているExcelを、その名前で保存する
    ActiveWorkbook.SaveAs Filename:=fileName
   
    MsgBox "デスクトップに保存が完了しました!"
    Set wsh = Nothing
End Sub

まとめ

実際の業務では、自分が作ったツールを何十人、何百人もの同僚と共有することがよくあります。

その際、「誰のPC環境でもエラーなく動く」コードを書くことは、技術力以上に「使う相手への思いやり」の表れです。

ぜひ今回の方法を取り入れて、より親切で信頼されるツール作りに挑戦してみてください!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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