プロが教えるわが家の防犯対策術!

TransferSpreadsheetのエラー処理について
ご教授お願いします。
TransferSpreadsheetで、エクセルファイルをインポートします。
その際、エクセルにシート保護(ブック保護)がかかっている
場合、読み取りができません。ここをエラー処理を表示させたいです。
現状では
If MyName <> "." And MyName <> ".." Then
' ビット単位の比較で、MyName がファイルであるかどうか
pu_strImfilename = MyName
DoCmd.SetWarnings False
'★★★ファイルインポートする
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, _
"wrk_Excelファイルインポート", sBuffer & "\" & MyName, True, "インポートの範囲"
DoCmd.SetWarnings True
End If
としています。
実行すると、保護状態のエクセルブックのみ、
'3161'が表示されます。どうぞよろしくお願いします。

A 回答 (3件)

Select Case Err.Number


Case 3161
MsgBox Err.Number & Err.Description & MyName
End If
ImportCancel = True
End Select

上記記載の「End If」はどこに由来するものですか?
また
>実行すると、保護状態のエクセルブックのみ、'3161'が表示されます。
とありますが、「MsgBox Err.Number & Err.Description & MyName」と指定しているのでメッセージが出ますよね。そのメッセージが出ないということなのでしょうか?

Select Case Err.Number
Case 3161
MsgBox Err.Number & Err.Description & MyName
Exit Sub
End Select

とでもしておけば、3161のエラーが発生したときに終了させることもできるでしょうし、スキップさせて指定したエラー時の処理まで飛ばすように指定すれば保護エラー発生後の処理ができるのではないですか?

現状保護エラー発生時にどのような現象が発生しているかをまず書かないと。

この回答への補足

すみません、説明がかなり不足しておりました。
本日エラー処理について私自身、再度、調査と勉強をしております。
もう一度経緯と、詳細など発生事象をまとめて
質問させていただきます。
回答者のお二方、まことにありがとうございました。

補足日時:2008/01/30 15:34
    • good
    • 0

>On Error GoTo ImportFile


>・インポート処理
>・クエリ実行
>ImportFile_Err:

とありますが
On Error GoTo で指定しているラベル ImportFileがないからでは?
ImportFile_Err と書くべきではないでしょうか?

この回答への補足

たびたび本当に申し訳ありません。
少しコードを伏せてここに記入したため、
記入ミスしてしまいました・・・
仰るとおり、以下で実装しています。

On Error GoTo ImportFile_Err 
・処理
・クエリ実行・
ImportFile_Err:

補足日時:2008/01/30 12:37
    • good
    • 0

「エラー処理を表示させる」とは、エラーメッセージを表示すると解釈してよろしいのでしょうか?



そうだと仮定して、書きます。

まず 環境はVisual Basic6.0以下ということでよいのでしょうか?
だとすれば On Errorステートメントを使用すればよいのではないでしょうか? あとはErrオブジェクトのNumberプロパティでエラーの原因を判別すれば良いと思います。

.NETならば Try Catchを使用しエラー情報を拾えばよいと思います。

この回答への補足

早速のお答えありがとうございます。
説明不足でごめんなさい。

環境は、ACCESSVBAです。
On Error GoTo ・・・でエラー処理を
走らせているはずなのですがエラー処理に行く前に
デバッグのダイアログメッセージが表示されてしまいます。
On Error GoTo ImportFile
・インポート処理
・クエリ実行
ImportFile_Err:
Select Case Err.Number
Case 3161
MsgBox Err.Number & Err.Description & MyName
End If
ImportCancel = True
End Select

とい感じです。

補足日時:2008/01/30 11:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています