
No.4ベストアンサー
- 回答日時:
crossgateです。
>■で再度のQで恐縮ですが、読取りパスワード設定したファイルをOPENすると、確かに
> Err.Number = 1004
> Mid(Err.Description, 1, 18) = "入力したパスワードは間違っています。" となります。
>が、パスワードの入力誤りでも同じになってしまうので何か判別する良い方法はありませんでしょうか?
これは、1回目のWorkbooks.Openのエラー情報が残っているためです。
(2回目のWorkbooks.Openがエラーになっている訳ではないです。)
>'(10)----------- エラーのため再度パスワード設定なしでOPENする。
>Set CHK_BOOK = Workbooks.Open(IN_FILE_NAME, , True)
このロジックを、以下のとおり変更してください。
-------------------------------------------------------
'(10)----------- エラーのため再度パスワード設定なしでOPENする。
Err.Clear '##########この行を追加するだけです。##########
Set CHK_BOOK = Workbooks.Open(IN_FILE_NAME, , True)
crossgateさんへ
色々、ご教授有難うございました!
お蔭様で、「Err.Clear」を指定し遂に完成しました。 再々ありがとうございました。 助かりました!
No.3
- 回答日時:
crossgateです。
>確認したところ、ブック保護されたファイルをOPENしても同様の「Err.Description, "入力したパスワードは間違っています。"」が返ってきてしまうのですが、判別の方法はありませんでしょうか。
ブック保護というのは、Excelのメニューから「ツール」→「保護」→「ブックの保護」で設定する保護のことですよね?
こちらでも#1のロジックで確認しましたが、普通に開けました。
badmi24さんに確認です。
・開こうとしているファイルは読み取りパスワードが設定されていない(ブックの保護だけしている)ファイルですか?
・Officeのバージョンが違うと動きが違うのかもしれません。どのバージョンを使っていますか?
(ちなみに私はOffice2003です)
この回答への補足
crossgateさんへ
Qのアンサー遅くなり失礼しました。
★指摘の通り、テストファイルの作成ミスで、読み取りパスワードの設定+ブックの保護設定を行ったファイルでした。ゴメンナサイ!
(こちらもOffice2003です)
■で再度のQで恐縮ですが、読取りパスワード設定したファイルをOPENすると、確かに
Err.Number = 1004
Mid(Err.Description, 1, 18) = "入力したパスワードは間違っています。" となります。
が、パスワードの入力誤りでも同じになってしまうので何か判別する良い方法はありませんでしょうか?
■■■今、こんなコーディングをしてます。(11)で判定したいのですが・・・■■■
'任意のExcelファイルをopenし、(1)ファイル保護の有無,(2)ブックの保護の有無を元のexcelシートに表示する。
FILE_PW = 0
Application.EnableEvents = False
On Error Resume Next
Set CHK_BOOK = Workbooks.Open(IN_FILE_NAME, , True, , "")
If Err.Number = 1004 And Mid(Err.Description, 1, 18) = "入力したパスワードは間違っています。" Then
'(10)----------- エラーのため再度パスワード設定なしでOPENする。
Set CHK_BOOK = Workbooks.Open(IN_FILE_NAME, , True)
'//////////////
'(11)----------- ★ ここで、正しいパスワードが入力されてOPENが正常に行ったのか、
'(11)----------- ★ それとも、パスワードの入力エラーでOPENか異常であったかを判定したい!★
'//////////////
If Err.Number = 1004 And Mid(Err.Description, 1, 18) = "入力したパスワードは間違っています。" Then
FILE_PW = 1 ' 1:パスワード設定あり
Err.Number = 0
End If
End If
'----------- OPENエラーの確認
'----------- エラー発生時は、処理を中止する
If Err.Number <> 0 Then
MsgBox "ファイルOPENエラー " & IN_FILE_NAME & " Err.Number=" & Err.Number & " " & _
vbCrLf & Err.Description, vbOKOnly + vbExclamation, "確認"
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0 'エラートラップのリセット
OWN_BOOK.Activate
'-------- ファイルの保護の確認
If FILE_PW = 1 Then
OWN_SHEET.Range("E3").Value = "ファイル保護あり"
Else
OWN_SHEET.Range("E3").Value = "ファイルの保護なし"
End If
'-------- ブック保護の確認
If CHK_BOOK.ProtectStructure = True Then
OWN_SHEET.Range("E4").Value = "ブック保護あり"
Else
OWN_SHEET.Range("E4").Value = "ブック保護なし"
End If
No.2
- 回答日時:
こんにちは。
DAO を使うと判定ができるかもしれません。
但し、DAO の参照設定が必要です。
ファイルに読み取りパスワードが設定されている場合は、「ファイルを解読できませんでした」という
エラーになります。
Sub パスワード判定()
Dim Db As database
On Error Resume Next
Set Db = Workspaces(0).OpenDatabase("C:\Temp\Book1.xls", False, False, "Excel 8.0")
If Err.Number <> 0 Then
MsgBox Err.Number & ":" & Err.Description
End If
Db.Close
Set Db = Nothing
End Sub
No.1
- 回答日時:
美しくない対処ですが、これでも一応できますね。
Sub BookOpenTest()
'エラーが起きても処理継続するように設定変更
On Error Resume Next
'ブックオープン。最後の""はパスワード
'パスワード設定されてないBookはこれでもオープンできる。
'パスワード設定されているBookは最後の""を省略するとパスワードの入力を求められる。
Workbooks.Open "C:\Book1.xls", , , , ""
'エラーメッセージが「オープン時のパスワード間違い」かチェック
If 1 = InStr(Err.Description, "入力したパスワードは間違っています。") Then
MsgBox "パスワード設定されてた"
ElseIf Err.Number <> 0 Then
MsgBox "その他のエラーが起きた" & vbCrLf & Err.Description
Else
MsgBox "パスワード設定されてなかった"
End If
'エラーが起きたら処理を止めるように設定変更
On Error GoTo 0
End Sub
この回答への補足
早々、回答頂き有難うございました。
確認したところ、ブック保護されたファイルをOPENしても同様の「Err.Description, "入力したパスワードは間違っています。"」が返ってきてしまうのですが、判別の方法はありませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Twitterの こうしたアク...
-
ツイッターのDMが開かない。。 ...
-
Excelのセルにユーザー名...
-
CSVファイルを添付するときにパ...
-
インスタの乗っ取り解除につい...
-
「そのメールアドレスはすでに...
-
さっき、インスタなどのパスワ...
-
カカオで退会せずに、アプリだ...
-
Steamのアカウントにログインで...
-
「@」(アットマーク)の無いメ...
-
ユニクロやGUのシフト管理アプ...
-
verify@twitter.comから、メー...
-
VB Script で掲示板を作る
-
ACCESSでログを残す方法
-
pixivで新規登録しようと思い、...
-
インスタの捨て垢で友達のスト...
-
Twitterでログインしている端末...
-
企業の問い合わせフォームに、...
-
Linuxでのサンバ(samba)につい...
-
runas実行した時にきかれるパス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルにユーザー名...
-
Steamのアカウントにログインで...
-
CSVファイルを添付するときにパ...
-
メールを返信したら、英語のメ...
-
ユニクロやGUのシフト管理アプ...
-
runas実行した時にきかれるパス...
-
YouTubeが毎回ログインしないと...
-
インスタの乗っ取り解除につい...
-
「そのメールアドレスはすでに...
-
携帯電話を解約してもSMSの受信...
-
カカオで退会せずに、アプリだ...
-
「@」(アットマーク)の無いメ...
-
ワードに入力したメールアドレ...
-
不正ログインされました。対応...
-
カカオトークを退会せずにアン...
-
インスタのアイコンについてるN...
-
pixivで新規登録しようと思い、...
-
存在しないアドレスにメールを...
-
メールアドレスを人に教えるの...
-
Access ファイルの権限を設定...
おすすめ情報