でも、書き込み先が、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 件のコメント:
コメントを投稿