@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

エクセル保存時にキャンセルでも作成されてしまう

1
投稿者投稿内容
ぴょん太
会議室デビュー日: 2007/01/19
投稿数: 7
投稿日時: 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 ]
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-06-18 22:55
from1.CommonDialog1.CancelError = True
ぴょん太
会議室デビュー日: 2007/01/19
投稿数: 7
投稿日時: 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
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-06-19 09:52
引用:

ぴょん太さんの書き込み (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


解決方法が間違っています。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-06-19 09:53
 え〜〜〜、一文では終わらないですよ?!

 そのソース、OKクリックしても作成されないでしょ?
 CancelErrorプロパティはキャンセルクリックでエラーを発生させるかどうかのプロパティなので、エラーは拾ってやらないとダメです。

 詳しくはCommonDialogのCancelErrorプロパティをヘルプで参照。
ぴょん太
会議室デビュー日: 2007/01/19
投稿数: 7
投稿日時: 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


ありがとうございました。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-06-19 12:20
 そのソースだとFileCopyでのエラーを拾えません。

 On Error Resume Next
 エラー発生時に次の行から処理を再開する。

ですので。
1

スキルアップ/キャリアアップ(JOB@IT)