電子書籍の厳選無料作品が豊富!

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

A 回答 (2件)

いいえ(キャンセル)と選択したが


ワークブックの保存処理を実行し失敗しているようですね。

On Error Resume Next

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

上記のように変更し、エラーを無視すればエラーを回避できます。
    • good
    • 1
この回答へのお礼

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

お礼日時:2010/06/18 13:08

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任せにしたりとかでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/06/18 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!