フォルダの中身を一気にオブジェクト挿入するExcelマクロ作った。

 今日は仕事で作ったエクセルのマクロを紹介します。
 
 システム管理なんかの作業をしてますと、
 ログファイルをエクセルの中に貼り付けして、
 説明やら障害の原因やらを書いて送信・・・
 なんて事が頻繁にあります。
 他の人は知りませんが、俺はあるんです。
 
 そのファイルをエクセルに貼り付ける方法なんですが、
 次のような手順を踏みます。

  1. メニューから「挿入」
  2. オブジェクト
  3. 「ファイルから」タブを選択
  4. ファイルを選んで
  5. 「アイコンで表示」にチェックをつけて
  6. OKボタンを押す

 こうすると、シート上にファイルのアイコンが出ます。
 ダブルクリックすると中身が開けるので、
 説明書と見せたいファイルを別々に管理しなくて便利*1
 
 しかし、1個や2個ならいいんですが10個以上になってくると
 さすがに面倒くさい。
 というわけで、マクロを作った次第です。
 以下ソースコード

Sub フォルダ内のファイルをインポート()
    Dim Cnt     As Long
    Dim strDir  As String
    Dim strFile As String

    strDir = InputBox("取り込むパスを入力してください")
  
    Cnt = 0
    strFile = Dir(strDir, vbNormal)
    
    While Len(strFile) > 0
        '' 貼り付ける場所を決定する
        ActiveSheet.Cells(((Cnt Mod 4) * 6) + 1, (Int(Cnt / 4) * 2) + 1).Select

        '' オブジェクト挿入コマンド
        ActiveSheet.OLEObjects.Add( _
            Filename:=Left(strDir, InStrRev(strDir, "\")) & strFile, _
            Link:=False, DisplayAsIcon:=True, IconFileName:="packager.exe", _
            IconIndex:=0, _
            IconLabel:=strFile).Select
        
        Cnt = Cnt + 1
        strFile = Dir()
    Wend
End Sub

使い方

 まずは上のコードをエクセルに貼り付けます。
 操作方法は次の通り。

  1. ツール
  2. マクロ
  3. Visual Basic Editor

 マクロを編集する画面を開いたら
 上のコードを貼り付けて、

  1. ツール
  2. マクロ
  3. マクロ...

 からマクロを実行してくださいね。
 
 んで、実行しましたら、
 表示されるダイアログに取り込みたいファイルを
 ワイルドカード付きで指定してやるといいです。
 (「C:\hogehoge\*.*」みたいな)
 
 バグはあるかもしれませんが、よろしくお願いします。

*1:弱点は 1.エクセルを開かないとファイルが見れないこと 2.添付したファイルはプログラムを指定して開けないこと