- - PR -
エクセル保存時にキャンセルでも作成されてしまう
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-18 22:47
お世話になっております。
現在VB6.0を使用しております。 早速ですが、保存時にファイル名が空であれば、 以下の処理で何も作成されません。 from1.CommonDialog1.InitDir = パス from1.CommonDialog1.Filter = "Excelファイル(*.xls)|*.xls" from1.CommonDialog1.FileName = "ファイル名" from1.CommonDialog1.ShowSave Dim strFile As String strFile = from1.CommonDialog1.FileName 'キャンセル時 If "" = strFile Then Else FileCopy パス & "○○.xls", strFile msgbox(strFile & "を作成しました") End If しかし、今回固定でファイル名を付ける事となり、 キャンセルを行った際、拡張子なしのファイルが作成されます。 空にせずとも、キャンセルを判断できる手段はありますでしょうか? ちなみに、GetSaveAsFilenameを使用してみたのですが、 パスの設定ができませんでした。 [ メッセージ編集済み 編集者: ぴょん太 編集日時 2007-06-18 22:49 ] | ||||
|
投稿日時: 2007-06-18 22:55
from1.CommonDialog1.CancelError = True
| ||||
|
投稿日時: 2007-06-19 09:21
早々返答ありがとうございました。
1文で終わってしまうとは思いませんでした…。 お恥ずかしい内容で申し訳ありませんでした。 以下の分岐でキャンセル時はスルーし、作成を行わないように 対応できました。 ありがとうございました。 If from1.CommonDialog1.CancelError = True Then '正常処理 Dim strFile As String strFile = from1.CommonDialog1.FileName FileCopy パス & "○○.xls", strFile msgbox(strFile & "を作成しました") endif | ||||
|
投稿日時: 2007-06-19 09:52
解決方法が間違っています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-06-19 09:53
え〜〜〜、一文では終わらないですよ?!
そのソース、OKクリックしても作成されないでしょ? CancelErrorプロパティはキャンセルクリックでエラーを発生させるかどうかのプロパティなので、エラーは拾ってやらないとダメです。 詳しくはCommonDialogのCancelErrorプロパティをヘルプで参照。 | ||||
|
投稿日時: 2007-06-19 11:30
ラフィンさん
じゃんぬねっとさん 返答ありがとうございます。 はい...保存でも作成されていませんでした。 また、キャンセル時にエラーが発生してしまいました。 じゃんぬねっとさんのサイトを参考にさせて頂き、 正常時は作成され、キャンセル時は何も作成されずに処理を行えました。 from1.CommonDialog1.InitDir = パス from1.CommonDialog1.Filter = "Excelファイル(*.xls)|*.xls" from1.CommonDialog1.FileName = "ファイル名" 'キャンセル判断 from1.CommonDialog1.CancelError = True 'キャンセル時エラーを表示しない On Error Resume Next from1.CommonDialog1.ShowSave ' 保存時作成 If Err.Number <> cdlCancel Then '正常処理 Dim strFile As String strFile = from1.CommonDialog1.FileName FileCopy パス & "○○.xls", strFile msgbox(strFile & "を作成しました") End If ' エラー処理を通常のロジックに戻す On Error GoTo 0 ありがとうございました。 | ||||
|
投稿日時: 2007-06-19 12:20
そのソースだとFileCopyでのエラーを拾えません。
On Error Resume Next エラー発生時に次の行から処理を再開する。 ですので。 |
1