VBScriptでドラッグアンドドロップしてファイルのフルパスを取得する方法


こんにちは!あつもり(@atumori17)です。

久しぶりに「初心者でも簡単!VBScriptでWindows効率化」シリーズですっ。今回は「ドラッグアンドドロップしてファイル名とフルパスを取得する方法」を紹介していきます。

日常業務の中でファイル名のフルパスが知りたいっていうケースがあると思います。例えばチーム内でファイルを共有したい場合。

ネットワークフォルダなどにあるファイル名のフルパスを書いて「ここにファイルが置いてありますよって」ってやると思います。そんな時にすぐにファイルのフルパスがわかると便利ですよね。

スポンサーリンク

複数ファイルのフルパスを調べるときに便利

実は今回紹介するアプリケーションを使わなくても簡単に調べられる方法があるんです。それはShiftキーを押しながら右クリックして「パスのコピー」でファイルパスをコピーできちゃいます。

「えっ?じゃあ今回のアプリケーションってそんなに便利じゃないじゃん」って思いますよね。でも複数のファイルを調べたい場合はどうでしょう?1回1回Shiftキーを押しながら右クリック・・・って面倒ですよね。

今回のアプリケーションは複数のファイルパスを一度に調べられるので便利ですよ。

ファイルのフルパスを取得するスクリプト

それではまずはスクリプトの全文を紹介します。テキストエディタを開き、下記のコードを入力します。全て入力し終わったら「ファイルのフルパス取得.vbs」などのファイル名でデスクトップに保存します。

Option Explicit        

    'ドラッグアンドドロップで取得したファイルパスを変数に入れる
    Dim GetPathArray
    Set GetPathArray = WScript.Arguments 
    
    'ファイルシステムオブジェクト
    Dim objFSO      
    Set objFSO = CreateObject("Scripting.FileSystemObject")              
    'イテレータ
    Dim pt

    'ファイルの数ぶんループする
    For Each pt in GetPathArray      
                        
        '取得したファイル名
        Dim FileName
        FileName = objFSO.GetFileName(pt)  
        
        'ファイルのフルパスをInputBoxで表示させる
        pt = InputBox("ドラッグアンドドロップしたファイル名 " & FileName,"ファイルのフルパスを表示", pt)        
    
    Next
    
    'オブジェクト変数をクリア
    Set objFSO = Nothing

プログラムコードの解説

Argumentsプロパティからファイルパスをコレクションとして取得する

WScriptオブジェクトのArgumentsプロパティを使うことでパラメータを取得することができます。パラメータとはプログラムに渡された値のことです。ここではドラッグアンドドロップしたファイルのパスになりますね。

パラメータはコレクションとして取得していますので複数ファイルのフルパスが格納されていいます。

Set オブジェクト変数 = WScriptオブジェクト.Arguments

とすることでコレクションとして取得したファイルのフルパスをオブジェクト変数の中に入れています。

For Each文でコレクションから1つ1つのフルパスを抜き出す

Argumentsプロパティでコレクションとして取得したフルパスですが、複数ファイルあった場合、1つ1つのファイルのフルパスにバラしてあげなければ使えません。そのためFor Each文を使い取得したファイルの数ぶんだけ繰り返し処理を行います。

下記のようにすることでコレクションの中の要素の数だけループさせることができます。つまりドラッグアンドドロップしたファイルの数だけ繰り返していることになります。

For Each オブジェクト変数 In コレクション
処理
next

上のコードで13~27行目の部分です。

    'ファイルの数ぶんループする
    For Each pt in GetPathArray      
                        
        '取得したファイル名
        Dim FileName
        FileName = objFSO.GetFileName(pt)
                
        'ファイルのフルパスをInputBoxで表示させる
        pt = InputBox("ドラッグアンドドロップしたファイル名 " & FileName,"ファイルのフルパスを表示", pt)        
    
    Next

GetFileNameメソッドでファイル名を取得する

ファイル名を取得するにはファイルシステムオブジェクトのGetFileNameメソッドを使います。

ファイルシステムオブジェクト.GetFileName(ファイルパス)

ファイルパスにはファイルのフルパスを指定します。

ファイルシステムオブジェクトはファイルやフォルダを操作できる便利なオブジェクトです。ファイルシステムオブジェクトについては過去の記事でも紹介していますので参考にしてみてください。

VBScriptでWEBスクレイピング!ファイルシステムオブジェクトでテキストに書き出す
VBScriptでファイルシステムオブジェクトを使ってシンプルにテキストファイルに保存するテクニックの紹介です。せっかくWEBスクレイピングでWEBサイトから必要な情報を取得しても、保存する場所がなければ取得したデータを使うことはできないからです。

InputBox関数でファイルのフルパスを表示させる

InputBoxは通常、ユーザーに対して文字列の入力をしてもらうために使うものですが、今回の場合、ファイルのフルパスを表示させるのに使います。どうしてこのような使いかたをするかは後ほどご説明します。

InputBoxは次のようにして使います。

InputBox(表示させる文言,タイトル名,テキストボックス内の値)
「テキストボックス内の値」にファイルのフルパスを入れています。

下の図を見てもらうとイメージがつかみやすいと思います。

今回のプログラムコードを見てみましょう。上記のコードで21行目にあたります。

pt = InputBox("ドラッグアンドドロップしたファイル名 " & FileName,"ファイルのフルパスを表示", pt)

InputBox関数の引数に次のような値を入れているのがわかりますね。

  • 「表示させる文言」にGetFileNameメソッドで取得したファイル名
  • 「タイトル名」にファイルのフルパスを表示
  • 「テキストボックス内の値」にArgumentsプロパティから取得したフルパス

InputBox関数を使うことでフルパスをコピーできる

ファイル名とフルパスを表示させるだけならMsgBox関数でもできるんじゃないか?と思ったかたもいるかと思います。でもInputBox関数を使ったのにはきちんとした理由があります。

下の画像のようにInputBox関数を使えば、テキストボックス内に表示させたフルパスをコピーすることができます。

しかしMsgBox関数だと表示させたファイルパスをドラッグして選択できないため、コピーができないんです。

実は・・Ctrl + C を使えばコピーできますが、コピーしたデータをテキストエディタに貼り付けると下の画像のようになってしまいました・・

これでは使いにくいですよね。以上のことがInputBox関数を使っている理由です。

プログラムの説明は以上になります。

アプリケーションを実行してみる

では実際に起動してみます。ファイルを複数選択し、デスクトップにある「ファイルのフルパス取得.vbs」にドラッグアンドドロップします。

InputBoxにファイルのフルパスが表示されました。「テスト1.txt」「テスト2.txt」それぞれのファイルパスが表示されます。

まとめ

いかかでしたか?今回の内容をまとめると以下のようになります。

  • WScriptオブジェクトのArgumentsプロパティでフルパスをコレクションとして取得できる
  • GetFileNameメソッドでフルパスからファイル名を取得できる
  • InputBoxは使い方次第で便利に使える関数です

以上になりますっ。お疲れ様でした~。

連載目次:初心者でも簡単!VBScriptでWindows効率化

Windowsを操作できるプログラミング言語「VBScript」を使って、日々の業務効率化! テキストエディタで簡単にできますので初心者にもおすすめです。
  1. 初心者でも簡単プログラムでWindowsの効率化!VBScriptをやってみよう
  2. VBScriptで複数のファイル・フォルダ・アプリケーションをダブルクリック一発で開く方法
  3. VBScriptで曜日ごとに起動するファイルやフォルダ、アプリケーションを変える
  4. VBScriptでドラッグアンドドロップしてファイルのフルパスを取得する方法
  5. VBScriptでドラッグアンドドロップで複数ファイルのフルパスをCSVに書き出す


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