|
▼VBA勉強中 さん:
まず、質問されている部分。
>2つとも CreateObjectを使われていることから画像とファイルを操作できるように
>指定してしているのかな?といった認識です。合っていますか?
そうではありません。
VBAコードを書く際に、エクセルオリジナル機能だけで処理できればいいのですが
エクセルとは別のプログラム(外部プログラム)の機能を使いたいという場合があります。
そういった場合、その外部プログラムを読みこんで、VBAから利用できるように
しなければいけません。
それが CreateObject("定められたプログラム呼び出し文字列") です。
"WScript.Shell" は、調べられた通り、実に様々な機能を提供してくれます。
今回使ったのは、その中の SpecialFolders("特殊フォルダ指定文字列") です。
たとえば デスクトップ のパス、vista以降は c:\Users\xxxxx\DeskTop ですね。
この xxxxx は PCのWindowsログインID ですから、実行するPC毎に異なります。
また、Users というフォルダ以降、DeskTop に至るまでのパス経路も、Vista以降、
『たまたま』そういった経路になっているだけで、XP時代は、全く別物でした。
ということは、今後のWindowsバージョンアップに伴って、このパス経路そのものも
変わる可能性があります。
なので、コード内で固定せず、WScript.Shellプログラムに対して、現在のバージョンの
実行PCの環境にふさわしいパス文字列をくださいね と依頼して、その文字列を
取得しています。
"Scripting.Dictinary" は、一般に ディクショナリーといわれる機能で
文字通り 『辞書』。辞書には『見出し語』と『内容』が登録されていますね。
今回は、辞書に 抽出済み画像ファイル名を見出し語として登録しておき、
それが、すでに使われたかどうか(Existsメソッド)チェックしています。
(『内容』は、今回不要なので、いずれも True をセットしています)
追加で説明のあった件も含めて、処理コードについては、今から説明を読んでみて
取り掛かります。
|
|