こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA で困っています。

Excel VBA で困っています。

下記のプログラムで、「名前を付けて保存」→「キャンセル」
を選択した場合のエラーは回避できたのですが、
「名前を付けて保存」→「保存」→「同じ名前のファイルが既に
ありますが置き換えますか?」→「いいえ(またはキャンセル)」
の時にエラーが出てしまいます。
どう直したら良いでしょうか。
よろしくお願いいたします。

Public Sub SaveBook()

Dim myBook As Variant

'「名前を付けて保存」ダイアログ
myBook = Application.GetSaveAsFilename("test.xls", _
"Excelファイル,*.xls", , "Excelブックを保存")
'キャンセル時の処理
If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub
'ブックの保存
ActiveWorkbook.SaveAs Filename:=myBook

End Sub

投稿日時 - 2010-06-18 11:57:05

QNo.5977167

すぐに回答ほしいです

質問者が選んだベストアンサー

いいえ(キャンセル)と選択したが
ワークブックの保存処理を実行し失敗しているようですね。

On Error Resume Next

'ブックの保存
ActiveWorkbook.SaveAs Filename:=myBook

上記のように変更し、エラーを無視すればエラーを回避できます。

投稿日時 - 2010-06-18 12:49:46

お礼

早速のご回答ありがとうございました。
できました!

投稿日時 - 2010-06-18 13:08:15

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

On Error ステートメント で制御したり、

Dim myBook As Variant
Dim ret  As Long
Do
  myBook = Application.GetSaveAsFilename("test.xls", _
             "Excelファイル,*.xls", , "Excelブックを保存")
  If VarType(myBook) = vbBoolean Then Exit Sub
  If Len(Dir(myBook)) = 0 Then
    Exit Do
  Else
    ret = MsgBox("既存ファイルあります。置き換えますか?", vbYesNoCancel)
    Select Case ret
    Case vbYes: Exit Do
    Case vbNo:
    Case vbCancel: Exit Sub
    End Select
  End If
Loop

こんな感じで自前で制御したり、あるいは

Application.Dialogs(xlDialogSaveAs).Show "test.xls"

など、Application任せにしたりとかでしょうか。

投稿日時 - 2010-06-18 12:38:30

お礼

早速のご回答ありがとうございました。
勉強になります。

投稿日時 - 2010-06-18 13:07:50

あなたにオススメの質問