フォルダの中身を一気にオブジェクト挿入するExcelマクロ作った。
今日は仕事で作ったエクセルのマクロを紹介します。
システム管理なんかの作業をしてますと、
ログファイルをエクセルの中に貼り付けして、
説明やら障害の原因やらを書いて送信・・・
なんて事が頻繁にあります。
他の人は知りませんが、俺はあるんです。
そのファイルをエクセルに貼り付ける方法なんですが、
次のような手順を踏みます。
- メニューから「挿入」
- オブジェクト
- 「ファイルから」タブを選択
- ファイルを選んで
- 「アイコンで表示」にチェックをつけて
- 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
使い方
まずは上のコードをエクセルに貼り付けます。
操作方法は次の通り。
- ツール
- マクロ
- Visual Basic Editor
マクロを編集する画面を開いたら
上のコードを貼り付けて、
- ツール
- マクロ
- マクロ...
からマクロを実行してくださいね。
んで、実行しましたら、
表示されるダイアログに取り込みたいファイルを
ワイルドカード付きで指定してやるといいです。
(「C:\hogehoge\*.*」みたいな)
バグはあるかもしれませんが、よろしくお願いします。
*1:弱点は 1.エクセルを開かないとファイルが見れないこと 2.添付したファイルはプログラムを指定して開けないこと