【散文気分】 - 2014/10/8 Wed -



たまにはテクニカルなお話をしてみましょう。
ただしそれらが読んで役に立つかどうかは別の問題です。 道具なり技術なりとはそうした使い方をして、そして望む結果を得る。  どちらかと言えば静的(Static)なツールです。

お菓子作りに使うコトなども、決して無いとは言い切れないでしょう。 ある目的へ到達する過程で、一つのある成果を得るために何を 動的(Dynamic)に駆使しようと自由だからです。 ・・・完成したら少しだけ味見させてくださいね。


Sub get_filename()

  folderN$ = "C:\Users\user\Pictures\ero_gazou" & "\" '─ @
  f_name$ = Dir(folderN$ & "*.jpg")  '────────── A

  If f_name$ <> "" Then
    For i% = 1 To 48 '──────────────── B
      Range("A" & Format(i%)).Select
      ActiveCell.FormulaR1C1 = f_name$
      f_name$ = Dir()
      If f_name$ = "" Then
        MsgBox "こんなんでけますただ。", vbInformation
        Exit For
      End If
    Next
    If f_name$ <> "" Then MsgBox "ファイル数ちゃんと確かめなはれ。", vbCritical
  Else
    MsgBox "そのようなファイルなど存在しない。", vbExclamation
  End If

End Sub


1.概説
指定したフォルダ内の複数ファイル(画像、映像、ドキュメントなどのまとまり)をExcelワークシート上にリストアップするVBAマクロです。

2.使い方
 @ フォルダの指定: folderN$に代入。(リテラル部分)
 A ファイルの種類: f_name$に代入。(リテラル部分・ワイルドカード『*』指定など)
 B ファイル数指定: For ループの終値に記述。(上記コードでは48個)
 ◆ 当該VBAマクロの実行。

3.汎用性
今の状態で汎用性はありません。(それこそが狙いの一つでもあります。)

4.利用にあたって
ファイル名に法則性の無い複数のファイル(数百単位とか)をリストアップしなければならない…などの、事務的な手間しごとを支援します。  筆者は他にも、日付を含むなどある種の法則性があるファイル名に別の法則性を持たせて一斉に300個くらいリネームする際などに、 適当にコードを変更して利用して来ました。

使用用途が異なる随時で、手入れをし易い状態に留めています。 コード内のリテラル使用も上等です。 その都度に必要な情報関数を 調べて使うよりも、その方がはるかに早いからです。 使い手の頭脳もコード内に参画したプログラム実行・・・ が、ポイントです。

効率を求めるためには、その使い方の見極め(重たい仕事か、軽い仕事か。 そもそも最終目的は何か。 その発生頻度は。)が不可欠です。  さらに手を加えて汎用性を盛り込んでゆくかどうかの見極めも同様だと考えます。





下記リストは、そうした作業で得た 成果物の一例であります。

さらに実用面ではHTMLタグに組み込む必要などがありますが、その辺の作業はExcelのワークシート関数を駆使しつつ文字列を連結させるなどし、 ほどなく完成させてゆきまする。

ファイル数はコレでもまだ少ない方かなと思います。 しかし全てをタイプして記述してゆくなど、よほど脳味噌がピンク色したような 時でないと、まずヤル気にはなれませんな。(※ 当社比)

141006_1500~001.jpg 141006_1500~002.jpg 141006_1500~003.jpg 141006_1520~001.jpg 141006_1521~001.jpg 141006_1521~002.jpg 141006_1521~003.jpg 141006_1522~001.jpg 141006_1522~002.jpg 141006_1524~001.jpg 141006_1525~001.jpg 141006_1526~001.jpg 141006_1528~001.jpg 141006_1529~001.jpg 141006_1531~001.jpg 141006_1531~002.jpg 141006_1534~001.jpg 141006_1534~002.jpg 141006_1536~001.jpg 141006_1538~001.jpg 141006_1538~002.jpg 141006_1540~001.jpg 141006_1540~003.jpg 141006_1542~001.jpg 141006_1543~001.jpg 141006_1544~001.jpg 141006_1545~001.jpg 141006_1547~001.jpg 141006_1549~001.jpg 141006_1555~001.jpg 141006_1555~002.jpg 141006_1557~001.jpg 141006_1600~001.jpg 141006_1601~001.jpg 141006_1603~001.jpg 141006_1605~001.jpg 141006_1606~001.jpg 141006_1607~001.jpg 141006_1608~001.jpg 141006_1609~001.jpg 141006_1610~001.jpg 141006_1611~001.jpg 141006_1612~001.jpg 141006_1613~001.jpg 141006_1616~001.jpg 141006_1620~001.jpg 141006_1622~001.jpg 141006_1625~001.jpg

去る10/6(月)の午後、台風18号・通過後の情景です。 短時間で50枚近く。 嵐の後の嵐ですか。 画像の解説、ボヤキ、毒舌やらは、 徐々に手掛けてゆきたいなと・・・ 希望します。








7.Oct.2014  藤沢市・円行 引地川沿いにて


もっと引いた位置から撮った満開の全体像は、白がブっ飛んぢまいました。 無念ナリ。

はい部長。 何です?  …説明ですかぁ。 (ふぅ… ヤレヤレ)

まずブラウン課長は電話中。 グリーンさんは資料集め。 ブルー主任がその確認にあたってて、ブラックさんがそれを整理してます。    ・・・で、 ホワイトさんは ブっ飛び中ぅぅぅ。  はぁ〜あ。


                       _/_/_/_/_/


P.S. 本文中で求めるような、ファイル操作に関連した便利ツール(フリーソフト)などが、恐らくは存在するのだろうと思いまする。  『あら。 アタシなんかはいつも友達から教えてもらったコレで ちゃちゃっとヤっちゃってるけどぉ…』 みたいな。  それが正しいと思います。 健康的だし。

他にも MS-DOS が多少ともお分かりならば、コマンドプロンプトを起動して dir コマンドの出力先をファイルに指定して実行し、 その結果を Excel 上でシコシコと加工する方法が簡単ですね。

複数ファイルのリネームなども あらかじめ ─.bat ファイルにまとめてコマンドを記述してから実行すれば可能です。  いやはや、懐かしい手法ですなぁ。


                       _/_/_/_/_/


P.S.2. コードを晒しているので突っ込みどころは多々ありましょう。 でも少しだけボヤきまする。

For ではなく While ループで変数 f_name$ がブランクになるまで回し続ければ、あらかじめファイル数(Forで回す数)を指定する 手間が省けていいんじゃないか・・・ と。 まさにその通りなのです。 でも私はその回し方をしません。 細かな説明は省きますが センスの問題などではなく、単なる好き嫌いです。

それと、簡単で短いコードですがブラック・ボックス的に (必要最低限の条件把握も無しに)実行してもおっけー♪ なのは、私の趣旨に見合いませぬ。

ただし、フォルダ内には色んなファイルが50個で、画像以外もいくつかあるから・・・ なんて時は、50指定でも正しい結果が出ますな。  実際の画像ファイル数よりも少ない指定だと困りますが。 その辺にもゆるさがありまする。

合理的センス(?)を追求したコードは、あまり他人にいじらせるべきではないとの認識です。
でも逆は大丈夫なんすょ(笑





←Prev→Index→Calendar→Next