Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


38 / 12962 ツリー ←次へ | 前へ→

【78726】ファルダ内の画像を任意のセルに貼り付ける方法 VBA勉強中 17/1/10(火) 17:11 質問[未読]

【78734】Re:ファルダ内の画像を任意のセルに貼り付... β 17/1/11(水) 12:47 発言[未読]
【78736】Re:ファルダ内の画像を任意のセルに貼り付... VBA勉強中 17/1/11(水) 13:54 お礼[未読]

【78734】Re:ファルダ内の画像を任意のセルに貼り...
発言  β  - 17/1/11(水) 12:47 -

引用なし
パスワード
   ▼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 をセットしています)

追加で説明のあった件も含めて、処理コードについては、今から説明を読んでみて
取り掛かります。

【78736】Re:ファルダ内の画像を任意のセルに貼り...
お礼  VBA勉強中  - 17/1/11(水) 13:54 -

引用なし
パスワード
   ▼β さん:

とても詳しくわかりやすい説明ありがとうございます
理解が少しだけ深まってきました
教えていただいたものはどれも非常に汎用性があり、今後もよく使っていく気がします。

38 / 12962 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free