でも、書き込み先が、ReadOnlyで開いていて書けないコトがある。
とゆー状況。
FileCopyステートメントを使ったら頻繁に実行時エラーが出てしまう。
on Error GoToでエラー処理するようcodingしてみた。
On Error GoTo ErrorHandlerSJ FileCopy source, destination Shell_Return = Shell(browser_exe, vbNormalFocus) Exit Sub ErrorHandlerSJ: MsgBox ("ErrorSJ") Exit Sub…なんか、美しくないな…( ゚-゚)~゚
やっぱりね、プロシージャの途中で終わるなんての、ダメだよね。
やっぱりね、返り値で成否を教えてくれないステートメントなんか使うのが
いけないよね。
そんなわけで、ちゃんと返り値で教えてくれる、おりこうさんな、
FileSystemObjectのCopyFileメソッドを使ってみた。
…実行時エラーでやがりましたorz
美しくないぜMicrosoft!
そんなわけで、
Dim FSO As FileSystemObject Set FSO = New FileSystemObject (中略) On Error Resume Next FSO.CopyFile source, destination Select Case Err.Number Case 0 Shell_Return = Shell(browser_exe, vbNormalFocus) Case Else MsgBox ("ErrorSJ:" & Err.Number) End Select
こーなりました。
でも、入れ子になったりしたら、
On Error GoToですっ飛ばして終わりにしたほうがキレイなんだろうなぁ…
ちなみに、FileSystemObjectを使うには、参照設定に、Microsoft Scripting Runtimeが必要です。MSDNに書いてなくて探した探した(笑
もちろん、実行時バインディングすれば参照設定はいりません。
…ふと思ったんだけど、VBAの場合は実行時バインディングの方がいいんじゃなかろうか。
よほど多量じゃない限り、オーバーヘッドなんかたかが知れてるし、
違う環境(参照設定していないマシン)でも動くモノを~と考えると、
実行時バインディングの方が有利なんじゃないかと…
人様向けに作るときに改めて考えてみよう( ゚-゚)~゚
0 件のコメント:
コメントを投稿