初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

ファイルを開きたいなら相対パスと絶対パスを覚えよう!-初心者のためのExcel(エクセル)マクロVBA入門

f:id:drumer2sh:20050817193105j:plain

ファイルを開くにはパスの概念が必要


ここで、ただ単にファイルを開きます。ということで話をすればOpenメソッドの説明とSave、SaveAsメソッドなんかを説明して終わりなんですが、それでは超初心者ブログではない!ということでちゃんとパスの概念を知ってほしいのでパスの説明をしたいと思います。
これがわかれば、ファイル操作は怖くない!

ファイルパスとは?ファイルまでの道のりのこと


ちょっとエクセルから離れますが、パソコンにファイルを保存する時に、保存する「場所」について皆さんはどれくらい意識していますか?実はあまり意識してない人も多いと思います。マイドキュメントに全部保存しちゃえ!的な。。。
せっかくマクロを作成するようなちょっとしたエクセルマスターを目指すわけですから、もう少しこの保存する場所を意識するようにしましょう。というか意識しやがれ!です。ファイルをただ開くという動作は、傍目でみるとただファイルのアイコンをダブルクリックしているだけですが、PCの内部では・・・

「どこそこドライブの○○フォルダの中のさらに××フォルダにある「hogehoge.xlsx」ファイルを開いて!」

なんて命令を行っています。ですので、Excelマクロでファイルを開くならこの命令通りきちんとファイルの場所を指定してあげなくてはいけないわけです。

フォルダ(ディレクトリ)は階層構造になっている。


Windowsに限らずPCでファイルを保存する場合、フォルダ-つまりディレクトリという物にファイルが複数入っています。ディレクトリが書類ケースでファイルが書類の1つ1つというイメージです。このディレクトリは階層構造にでき、ディレクトリの中にさらにディレクトリを作成することができます。(わかりにくい場合はディレクトリをフォルダに置き換えて読んでください)こうすることで、ファイルの種類や目的によってファイルを整理できるようになっています。そして、階層構造になっているためファイルの場所について「深い」とか「浅い」なんて言います。深いということはより多くのフォルダ階層を経て、ファイルが存在し、浅ければ比較的すぐにファイルにたどり着きます。

じゃあ一番最初の場所はどこ?


階層構造なので、一番最初の場所というのがあります。これを「ルートディレクトリ」と呼びます。単に「ルート」と読んだりもします。単語のお話です。さて、このルートを基本にいくつかのフォルダが作成されさらにその中にフォルダがあり、、、という構造になっているのが基本です。Windowsで言えば大体「Cドライブ」がルートになります。スタートボタンを右クリックしてエクスプローラを表示し、左側の「コンピュータ」(バージョンによってはマイコンピュータ)をクリックすると「ローカルディスク(C:)」が表示されます。これが「ルートディレクトリにあたるCドライブ」になります。
もっと平たく言えば、保存されているハードディスクの一番最初。みたいなイメージです。

ファイルの場所をコンピュータに伝えよう!


さて、単に「Cドライブ」と言ってもコンピューターは当然わかってくれません。VBAを使ってPCにエクセルの操作を伝えるように、ファイルの場所を伝えるにも当然「書き方」が存在します。さっそくファイルの書き方を記載します。これがいわゆる「ファイルパス」という物になります。

  • ドライブ名(ルート)は「C:\」と書く。Dドライブなら「D:\」
  • \マークはスラッシュ「/」でも可
  • ルート以降は\または/で区切ってディレクトリ名を指定する
  • 最後にファイル名を指定する


これが、記述する文法ですね。さて、ではshuhhoさん(ユーザー名)がマイドキュメントに保存したhogehoge.xlsxを開くにはどのようなファイルパスになるでしょうか?

C:\Users\shuhho\Documents\hogehoge.xlsx

Windows7の場合だとこんな感じです。つまりマイドキュメントに保存すると・・・


「CドライブのUsersフォルダのshuhhoフォルダのDocumentsフォルダの中にあるhogehoge.xlsx」

ファイルを開く!ということになります。以外と「深い」ですね。ルートから数えて、4階層目です。これが「ファイルパスを指定してファイルを開く」ということです。

指定の文法は実は2種類!(絶対パス相対パス)


さて、上の方法は絶対パスと呼ばれる方法です。この方法で指定すれば必ず目的のファイルへたどり着ける指定方法ですね。なぜならルート(一番最初)から順番に指定しているわけですから。これと対照的なのが相対パスと呼ばれる方法です。相対パス「今自分がいるフォルダから見て目的のファイルを指定する方法」です。


はぁ?


良くわからないですよね。今自分がいる。というのは現在開いているファイルの場所から見てという意味です。例えば先ほどの「CドライブのUsersフォルダのshuhhoフォルダのDocumentsフォルダの中」にファイルがあるならその場所を基準にして。そこから1階層下だとか上だとかを指定してあげて、ファイルの場所を特定します。
書き方は以下の通り。

だいたいこんなもんです。では早速例です。先ほどと同じ場所にhogehoge.xlsxがありますが、そのhogehoge.xlxsにマクロを組んで、2つ上のUsersフォルダのhhohheyさんフォルダの中のtmpフォルダにある「Data.xls」ファイルを開きたい場合、相対パスで指定すると・・・

../../hohhey/tmp/Data.xls

となります。二つ上に上がってそれから他のフォルダに階層が下がるイメージですね。ちなみにこれを絶対パスで指定すれば、

C:\Users\hohhey\tmp\Data.xls

となります。単に同じフォルダ内のファイルを相対パスで開きたいなら「./ファイル名」でいいわけです。相対パスは省略してかけるので非常に便利ですが、その反面わかりにくいというデメリットもありますので気をつけましょう。

絶対と相対はどう使い分けるの?


一番簡単なのは

「ルートドライブやディレクトリ」が分かっていれば絶対パス。そうでないなら相対パス

です。ルートドライブが分かっている場合は絶対パスを使う方がいいですが、そうでない場合が実は結構あります。例えば、あなたが作成したマクロ。あなたのPCだけで使ってればいいですが、違う人のPCで使いたい場合は?ファイルの構成はどうなっているでしょうか?当然、「わからない」ですよね。そういう場合はやはり相対パスで記載した方が良いわけです。

パスを知ることはPCを知ること


以上がパスのお話です。簡単?だったでしょうか?このファイルの場所について意識をするようになると途端に、PCというものがどのようなファイルの構成で出来ているのか?とか、1つのマクロを作るのにどういうファイルやフォルダ構成が良いのか?ということをちゃんと考えることができます。より、PCやITに近い考えになっていくので、みなさんもただ保存するのではなくて、きちんと分類やファイルの構成を考えましょう。

「ここにファイルおいたら深すぎんだよなぁ」

とか言えたら一人前です。(笑)


今日はここまで。



かしこ