
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件)
- 最新から表示
- 回答順に表示
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のエラーが発生したときに終了させることもできるでしょうし、スキップさせて指定したエラー時の処理まで飛ばすように指定すれば保護エラー発生後の処理ができるのではないですか?
現状保護エラー発生時にどのような現象が発生しているかをまず書かないと。
この回答への補足
すみません、説明がかなり不足しておりました。
本日エラー処理について私自身、再度、調査と勉強をしております。
もう一度経緯と、詳細など発生事象をまとめて
質問させていただきます。
回答者のお二方、まことにありがとうございました。
No.2
- 回答日時:
>On Error GoTo ImportFile
>・インポート処理
>・クエリ実行
>ImportFile_Err:
とありますが
On Error GoTo で指定しているラベル ImportFileがないからでは?
ImportFile_Err と書くべきではないでしょうか?
この回答への補足
たびたび本当に申し訳ありません。
少しコードを伏せてここに記入したため、
記入ミスしてしまいました・・・
仰るとおり、以下で実装しています。
On Error GoTo ImportFile_Err
・処理
・クエリ実行・
ImportFile_Err:
No.1
- 回答日時:
「エラー処理を表示させる」とは、エラーメッセージを表示すると解釈してよろしいのでしょうか?
そうだと仮定して、書きます。
まず 環境は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
とい感じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
レコード登録時に「演算子があ...
-
エクセル 足し算引き算で 空...
-
ActiveCell.FormulaR1C1の変数
-
【VB.NET】 パワポ操作を非表示で
-
【VBAエラー】Nextに対するFor...
-
「実行時エラー '3167' レコー...
-
VBA データ(特定値)のある最...
-
VB.NETでMessageBoxが表示され...
-
【Access】Excelインポート時に...
-
ACCESSで値を代入できないとは?
-
paizaで下記コードを提出すると...
-
mailstorehomeのエクスポートで...
-
CATIA注釈について教えて下さい。
-
String""から型'Double'への変...
-
エクセル関数式=ABSで#VALUE!...
-
文字を数字に変換したい
-
UBoundに配列がありませんとエ...
-
VB6のプログラムをWIN7で使いたい
-
オートシェイプの削除時のエラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
String""から型'Double'への変...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
VBA エクセル で FIND でのエラ...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
「実行時エラー '3167' レコー...
おすすめ情報