[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドライブを接続してない場合、エラーを回避してメッセージを』(今泉)
ExcelのVBAでDドライブを接続してない場合、エラーが出ます。
Set folder = fso.GetFolder("D:\ #Nendo")
エラーは出さずに「Dドライブを接続してください」とMSGBOXで表示して
SUBを終了させるコードを考えましたが
何か2度も同じようなMSGBOXを利用することになりました。
もっとスマートなコードがありそうなのであれば教えて下さい。
' ---- 現在のコード -----
' ファイルシステムオブジェクトを作成 Set fso = CreateObject("Scripting.FileSystemObject")
'Dドライブの接続チェック If Not fso.DriveExists("D:") Then MsgBox "Dドライブを接続してください", vbExclamation Exit Sub End If
'Dドライブが存在する場合、 ' On Error Resume Nextを使用してエラーハンドリングを有効にして ' D:フォルダを取得 On Error Resume Next Set folder = fso.GetFolder("D:\#Nendo")
'エラーが発生した場合(Dフォルダが存在しない=Err.Numberが0以外の場合) 'この場合、メッセージボックスを表示してサブルーチンを終了。 If Err.Number <> 0 Then MsgBox "Dドライブを接続してください", vbExclamation Exit Sub End If
'エラーハンドリングを無効化 On Error GoTo 0
< 使用 Excel:Excel2021、使用 OS:Windows11 >
Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.DriveExists("D:") = False Then GoTo ErrDriveExists
Set folder = FSO.GetFolder("D:\#Nendo") 'なにかの作業
Exit Sub
ErrDriveExists:
MsgBox "Dドライブを接続してください", vbExclamation End Sub
例えばこんな感じとか。。。
「VBA エラー回避」で検索してみると例文がみつかると思います。
(まっつわん) 2024/11/07(木) 08:15:42
FolderExistsメソッドを使うと On Error xx を使わなくて済みますし、 メッセージもより適切なものに限定できると思います。 (xyz) 2024/11/07(木) 08:18:09
もちろん2段階でチェックするのは同じです。 (xyz) 2024/11/07(木) 08:19:17
とかが用語としては正しいかも。。。?
(まっつわん) 2024/11/07(木) 08:19:44
xyzさん、教えてもらったFolderExistsメソッドを利用すると
わかりやすいコードになりました。
ありがとうございます。
' ファイルシステムオブジェクトを作成 Set fso = CreateObject("Scripting.FileSystemObject")
'D:ドライブの存在チェック If fso.FolderExists("D:\#Nendo") Then 'D:ドライブが存在 Else MsgBox "「D:ドライブ」又は「D:\#Nendo」が存在しません。" & vbCrLf & vbCrLf & _ "「Dドライブ」の接続を確認してください。", vbOKOnly + vbInformation, "確認 !!" Exit Sub End If (今泉) 2024/11/07(木) 09:11:47
ちょっと違います。 こんな風になりませんか?
Sub test() Const folder As String = "D:\#Nendo" Dim fso As Object Dim drive As String
Set fso = CreateObject("Scripting.FileSystemObject")
'ドライブの接続チェック drive = Left(folder, 2) If Not fso.DriveExists(drive) Then MsgBox drive & "ドライブを接続してください", vbExclamation Exit Sub End If
'フォルダの存在チェック If Not fso.FolderExists(folder) Then MsgBox folder & " が存在しません。確認して下さい" Exit Sub End If
'以下正常の場合の処理 End Sub
(xyz) 2024/11/07(木) 09:26:46
'Dドライブの存在チェック If Not fso.DriveExists("D") Then MsgBox "「D:ドライブ」が接続されていません。" & vbCrLf & vbCrLf & _ "「Dドライブ」の接続を確認してください。", vbOKOnly + vbInformation, "確認 !!" Exit Sub End If
'フォルダの存在チェック If Not fso.FolderExists("D:\#Nendo") Then MsgBox folder & " が存在しません。確認して下さい。" Exit Sub End If
(今泉) 2024/11/07(木) 11:04:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.