• 締切済み

TransferSpreadsheetのエラー処理

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'が表示されます。どうぞよろしくお願いします。

みんなの回答

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.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のエラーが発生したときに終了させることもできるでしょうし、スキップさせて指定したエラー時の処理まで飛ばすように指定すれば保護エラー発生後の処理ができるのではないですか? 現状保護エラー発生時にどのような現象が発生しているかをまず書かないと。

peko_12
質問者

補足

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

  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.2

>On Error GoTo ImportFile >・インポート処理 >・クエリ実行 >ImportFile_Err: とありますが On Error GoTo で指定しているラベル ImportFileがないからでは? ImportFile_Err と書くべきではないでしょうか?

peko_12
質問者

補足

たびたび本当に申し訳ありません。 少しコードを伏せてここに記入したため、 記入ミスしてしまいました・・・ 仰るとおり、以下で実装しています。 On Error GoTo ImportFile_Err  ・処理 ・クエリ実行・ ImportFile_Err:

  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.1

「エラー処理を表示させる」とは、エラーメッセージを表示すると解釈してよろしいのでしょうか? そうだと仮定して、書きます。 まず 環境はVisual Basic6.0以下ということでよいのでしょうか? だとすれば On Errorステートメントを使用すればよいのではないでしょうか? あとはErrオブジェクトのNumberプロパティでエラーの原因を判別すれば良いと思います。 .NETならば Try Catchを使用しエラー情報を拾えばよいと思います。

peko_12
質問者

補足

早速のお答えありがとうございます。 説明不足でごめんなさい。 環境は、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 とい感じです。

関連するQ&A

専門家に質問してみよう