■環境
Excel vbaを使用
■やりたいこと
[csvファイルを開く]ダイアログボックスで、キャンセルを押した際エラーが出てしまう。
エラーを出さずにvbaを終了させるか、if文中のelseに振り分けたい。
■過去の質問
https://teratail.com/questions/231492
■エラー内容
実行エラー '1004':
申し訳ございません。False.xlsxが見つかりません。名前が変更されたか、移動や削除が行われた可能性があります。
■VBA
vba
1Sub vba() 2 '変数 3 Dim csv As String 4 Dim csvname As String 'csvの名前 5 Dim csvsheet As String 'csvのシート名 6 7 'csvシートを選択する。 8 ChDir "C:\" 9 csv = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", Title:="CSVファイルの選択") 10 If OpenFileName <> "False" Then 11 Workbooks.Open csv 12 'ファイル名を取得 13 csvname = Dir(csv) 14 'シート名を取得 15 csvsheet = ActiveSheet.Name 16 Else 17 MsgBox "キャンセルされました" 18 End If 19 20End Sub
■試したこと
・If OpenFileName <> "False" Then
→If OpenFileName <> "False" And OpenFileName <> "False.xlsm" Then に変更
・If OpenFileName <> "False" Then
→If OpenFileName <> "False*" Then に変更
ご存知の方がいらっしゃれば教えていただけると幸いです。
モジュールの先頭に Option Explicit は存在しますか?
OpenFileName はどこでどのように定義されている識別子ですか?
コメントありがとうございます。
存在していません。
調べてみたら便利なコマンドですね……。使用して修正してみます。
`Option Explicit`をモジュールの先頭に書いておくと、よくわからない名前を検知してコンパイルエラーを起こしてくれるようになります。
書き捨てのコードならともかく、きっちり処理を作成したい場合は、しょうもないミス(質問のような変数名のミスなど)を減らせるので有用です。
VBA のエディタのメニューバーの ツール(T) > オプション(O) > 編集タブ > 変数の宣言を強制する(R) をオンにしておくと、それ以降に作成したモジュールに`Option Explicit`が自動挿入されるようにもなります。
追加のコメントありがとうございます。
そんな設定があるのですね!
さっそく設定して今後に生かさせていただきます。
回答2件
あなたの回答
tips
プレビュー