• ベストアンサー

excelVBAについて。

以下の写真の説明が分かりません。「自身と同じフォルダ」を利用するとはどういう事でしょうか?①パスの取得とは何でしょうか?②これらを使うのも便利です。のこれらとは何でしょうか? いまいちここでやっている事が分からないので、もう少し詳しく教えて頂けると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.4

 フォルダ=パスです。(このような場合、用語を統一して欲しい。私に言わせれば、この本は説明が下手です) ① ThisWorkbook.Path でパスを取得します。 ②具体例を見るのが解りやすいと思います。 マクロを使って別ワークブック(Book2 )を開きたい場合   Workbooks.Open "C:\Users\MA\Desktop\My Documents\質問解答\OKWAVE\q10304626\Book2" の様に書けば開けます(マクロの記録を使えばこのようになる)。これではフォルダ名が変わればアウトです。 しかし   Workbooks.Open ThisWorkbook.Path & "\Book2" と書けば、 ・フォルダ名を変更しても、プログラムの変更は不要です。 ・別フォルダにコピペすれば、同じBook2 に違うデータを持たせることが可能になります。 ・別のパソコンにインストールしても動きます(ユーザー名は人によって違う) 但し、これらは同じフォルダに入れおく必要があります。 CSV 、画像ファイル等、Excel 以外のファイルを扱う時もこの方法が使えます。

その他の回答 (3)

  • 52270223
  • ベストアンサー率0% (0/4)
回答No.3

「自分と同じフォルダ」は正式な用語では「カレントフォルダ」といいます。 テキストに書かれている内容は、ある程度の前提知識がないと理解が難しいかもしれません。以下の用語の意味と内容を理解するとよいです。 ・カレントフォルダ ・パス(PATH) ・相対パスと絶対パス ・環境変数(フォルダ名に関するもの) どれも検索すればすぐに見つかりますが、意味を理解するのは、いくつもの例題などで説明を見ないとすぐには頭に入ってきません。ネット検索すれば例題とともに詳しい説明が見れると思います。 上の用語を使って元のテキストの文章を書くとこんな感じになります。 --- ここから プログラムでパスを記述する必要があるときは、パスのフォルダが移動されたり名前が変わってしまうとプログラムが正常に実行されません。その対策として「カレントフォルダ」からの相対パスを使ってパスを記述すると、例えフォルダが移動されても、相対的なパスが変わっていなければエラーにならず、プログラムを修正する必要もありません。 また、マイドキュメントやデスクトップなど、移動されたり削除されたりすることのないフォルダをプログラムで利用する方法もあります。 これらマイドキュメントやデスクトップなどのフォルダのパスをプログラムで記述する場合は、環境変数を使って記述すると便利です。 --- ここまで 環境変数という言葉は元の文章には出てきませんが、マイドキュメントやデスクトップのパスを記述するときにはよく使います。 短文で、前提知識なしですべてを理解できるように説明するのは無理なので、まずはそれぞれの用語を理解することが必要かと思います。

  • kzr260v2
  • ベストアンサー率48% (852/1775)
回答No.2

パスを扱う必要が出るのは、Excelでデータを扱ううちに「データの分割」が必要になるからです。 例えば、年次のデータを扱うとか、社員ひとりひとりのデータを扱う、支店毎の日次データを扱う、などです。これらをひとつのxlsmに入れて処理することは、最初は不可能ではありませんが、すぐに大量のデータにより、パソコンの動作が遅くなったりするでしょう。また、手順として、ひとつのxlsmファイルを複数人で交代で扱うことになり、作業は煩雑になるでしょう。 具体的な例としては、社員ひとりひとりに入力用xlsmを用意し、集計用のxlsm内のVBA実行時に、複数の入力用xlsmファイルのデータをひとまとめにする、みたいなことになります。 このような場合のプログラミング(Excel VBA)に、パスの取得は必須になります。参照する別のxlsmファイルのパスが、「必ず同じフォルダになるよう運用」する必要はあります。 >>?①パスの取得とは何でしょうか? 上記にご案内した内容になります。VBAで別のxlsmからデータを取得したり、別のxlsmへデータの書き出しをしたりする場合、必要ですが、現在そのようなデザインになっていないなら、不要です。 >>②これらを使うのも便利です。のこれらとは何でしょうか? この場合の「これら」とは、自分自身のパス以外の、マイドキュメントやデスクトップのパスです。 例えばデスクトップのパスの場合、ユーザー名がnushiだとしたら、C:¥Users¥nushi¥Desktop¥というパスになります。マイドキュメントでは、C:¥Users¥nushi¥Documents¥というパスになります。ここのxlsmファイルを参照するようにプログラミングしても良い、といった意味合いになります。 ※ セル内の式でも、別のxlsmファイルを参照させることは可能です。 ※ 個別xlsmファイルを、LAN内のファイルサーバーに置く、という方法もあります。この場合は、「参照するのはLAN内のパス」となるので、自分自身のパスは不要です。しかし、自宅で作業したり、LANが切断されたりすると、利用できなくなります。フォルダ単体で利用できるなら、フォルダまるごとコピーして、ローカルのパソコンで作業ができてしまいます。 ※ あくまでも私の個人的な考えですが、Excelでファイル分割が必要になったなら、業務用システムとして構築して検討が必要な段階だと思います。変更や修正は大変になりますし、引き継ぎも大変です。Excelにはデータを保護する機能はありますが、ファイル名を変更されたり、古いファイルを上書きされたりなどは、Excelでは管理しきれません。まるごとコピーもできてしまいますから、セキュリティとしても脆弱です。 もちろん、自分ひとりで利用するなら、とくに問題にはならないです。 以上、参考にならなかったらごめんなさい。

回答No.1

まず、以下を読んで「パス」について理解して下さい。 https://wa3.i-3-i.info/word18272.html >「自身と同じフォルダ」を利用するとはどういう事でしょうか? プログラミングをしていると「プログラム上でファイルを新規作成する必要」が出る場合があります。 適当な場所を決めてファイルを新規作成したり、人間が場所を入力してファイルを新規作成しても構いませんが、その場所が「既存」なのか「存在しない」かで、プログラムを変更しないといけません。 なので「確実に既存のフォルダ」である「自作したプログラムと同じ場所」にファイルを新規作成した方が確実です。 それが『「自身と同じフォルダ」を利用する』という意味です。 >①パスの取得とは何でしょうか? 自身と同じフォルダを利用する(自身と同じフォルダにファイルを新規作成する)には、自身が保存されている「フォルダの場所」を知る必要があります。「フォルダの場所を知る」とは、言い換えれば「パスの取得をする(フォルダパスの取得をする)」と言う事です。 >②これらを使うのも便利です。のこれらとは何でしょうか? 直前の文章に書いてあるのが「これら」です。 つまり「マイドキュメントのパス(マイドキュメントのフォルダパス)」や「デスクトップのパス(デスクトップのフォルダパス)」が「これら」です。 ご質問の文章で言いたいのは ファイルを新規作成する必要が出たら、プログラム自身が保存されているフォルダパスを取得してそのフォルダにファイルを新規作成するか、マイドキュメントのフォルダパスを取得してそのフォルダにファイルを新規作成するか、デスクトップのフォルダパスを取得してそのフォルダにファイルを新規作成すると良いでしょう。 と言う事です。

zasx1097
質問者

補足

その場所が「既存」なのか「存在しない」かで、プログラムを変更しないといけません。の所で、プログラムを変更すると、「既存」の場合と、「存在しない」場合とではプログラムはどのように変わるのでしょうか?教えて頂けると幸いです。

関連するQ&A