【Mac】ExcelVBAでダウンロードフォルダの中のファイルから一番新しいファイルのパスを取得する方法。

2014年3月18日火曜日

mac tips vba

t f B! P L

photo credit: COG LOG LAB. via photopin cc

誰の役に立つのかわからないのですが、自分用のメモとして。

前提

あるURLをGETで叩くと、ファイルがダウンロードされるとします。

そのダウンロードしたファイルはウェブ側でランダムなファイル名がつけられるとします。

この場合ダウンロードしたファイルを自分で指定するのではなく、VBAの中からダウンロードフォルダを参照して一番新しいファイルのパスを取得して、処理対象ファイルを特定してしまいたいと思います。


MacのExcelVBAでファイル操作するならAppleScriptが一番簡単

WindowsのExcelVBAばかりを触ってきた僕のような人には、入り口はとっつきづらいですが、慣れてしまえばファイル操作関係はAppleScriptに任せてしまうのが一番簡単です。

AppleScriptでダウンロードフォルダの中のファイルを引っ張って、一番新しいファイルのパスを取得するには以下のように書きます。

tell application "Finder"
set myfiles to (sort (get files of (path to downloads folder)) by creation date)
set myfile to end of myfiles as alias
return myfile
end tell


試しに、MacのAppleScriptエディタから上記をコピーして貼り付けて実行して見てください。

ご自身のダウンロードフォルダの中のファイルで一番新しいファイルのパスが返されるかと思います。

あとは、これをExcelVBAから呼びだしてあげます。

ExcelVBAからの呼び出しは、MacScriptで。

お決まりですが、ExcelVBAからAppleScriptを実行するには、MacScriptで行います。

s= "tell application ""Finder""" & vbCrLf & _
"set myfiles to (sort (get files of (path to downloads folder)) by creation date)" & vbCrLf & _
"set myfile to end of myfiles as alias" & vbCrLf & _
"return myfile" & vbCrLf & _
"end tell"

myfile = MacScript s

実はこれ、iPhoneから更新しているので本当にこのままで動くのかやや不安なのですが。

たぶん、ダブルコーテーションの書き方とスペースの取り方を間違えてなければ動くはずです。

これで、Myfileにダウンロードフォルダの一番新しいファイルのパスが返ってきます。


最後に

AppleScriptを使うと、えっ!これもMacのExcelVBAだと出来ないの!?と思っていた事が大抵できるようになります。

AppleScriptエディタも意外と使ってみると簡単に使えますので、なんか難しそうと思って敬遠していた方は是非使ってみてください。

プログラマーでなくても意外とできます。

以上です。




過去の記事

ラベル

アプリ (545) iPhone (485) mac (244) 買い物 (89) 番外 (87) ブログ (74) 書評 (68) 写真 (64) Blogger (63) 仕事 (55) webサービス (51) 生活 (50) todo (38) tips (36) rss (33) DVD (24) DraftPad (23) music (19) 外食 (14) 機種変更 (14) メール (13) ニュース (12) お出かけ (11) まとめ (11) アクセス解析 (11) HTML (9) ドラマ (8) vba (7) 絵本 (7) Excel (6) Textwell (6) web (4) libreoffice (3) twitter (3) 勉強 (3) basic (2) 素材 (2)

ブログを検索

QooQ