Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


52928 / 76732 ←次へ | 前へ→

【28629】Re:メニューバーの制限
回答  りん E-MAIL  - 05/9/10(土) 16:19 -

引用なし
パスワード
   BOCOTT さん、こんにちわ。・

>便利なイベント関数があったのですね。
>いろいろ仕様を考えた結果
>「名前を付けて保存」をイネーブル表示にして
>「上書き保存」を選択された場合に、今表示しているエクセルの情報を
>CSV形式のファイルにはきだそうと考えています。

>教えて頂いたWorkbookのBeforeSaveイベントは、
>「上書き保存」以外(名前を付けて保存はイネーブル表示なので)
>には、走らないと考えて宜しいのでしょうか?

ブックの保存自体ができないので、『名前を付けて保存』もできません。
前回のCancel=Trueは保存自体をキャンセルしますが、SaveAsUIをTrueにすると、名前を付けて保存ダイアログが表示されます。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If Not ThisWorkbook.Worksheets(1).Range("A1").Value = 1 Then
   MsgBox "", vbExclamation, "上書保存不許可"
   SaveAsUI = True 'Trueにすると名前を付けて保存ダイアログが表示
  End If
End Sub

なので、保存関係のコマンドが実行された場合にcsvに吐き出すなら、このプロシージャ−内で処理するようにしたほうがいいですね。
ただし、前回のThisWorkbook.Worksheets(1).Range("A1").Value=1などのように、何かしらの条件をクリアしたときは上書きができるようにしておかないと、せっかく作ったマクロが保存されなかったり、入力したデータが消えてしまったりという心配もあります。

例:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  '左端シートのAA1の値が1の時は通常の保存、それ以外はcsvを作成
  If Not ThisWorkbook.Worksheets(1).Range("AA1").Value = 1 Then
   ActiveSheet.Copy '現在表示しているシートを複製してcsvに
   Ofile = Format(Now(), "yymmddhhmmss") & ".csv" '現在のフォルダにcsv保存
   '保存
   Application.DisplayAlerts = False
   With ActiveWorkbook
     .SaveAs Filename:=Ofile, FileFormat:=xlCSV
     .Close
   End With
   Application.DisplayAlerts = True
   '終わり
   MsgBox CurDir & "\" & Ofile, vbInformation, "csvを作成しました"
   Cancel = True '当ブックの保存はキャンセル
  End If
End Sub

こんな感じです。

0 hits

【28600】メニューバーの制限 BOCOTT 05/9/9(金) 20:04 質問
【28601】Re:メニューバーの制限 かみちゃん 05/9/9(金) 20:15 回答
【28604】Re:メニューバーの制限 BOCOTT 05/9/9(金) 20:28 お礼
【28602】Re:メニューバーの制限 MOON 05/9/9(金) 20:19 回答
【28603】Re:メニューバーの制限 BOCOTT 05/9/9(金) 20:27 質問
【28605】Re:メニューバーの制限 りん 05/9/9(金) 20:49 発言
【28606】Re:メニューバーの制限 BOCOTT 05/9/9(金) 21:13 質問
【28607】Re:メニューバーの制限 かみちゃん 05/9/9(金) 21:27 回答
【28608】Re:メニューバーの制限 かみちゃん 05/9/9(金) 21:42 回答
【28625】Re:メニューバーの制限 BOCOTT 05/9/10(土) 14:53 お礼
【28610】Re:メニューバーの制限 りん 05/9/10(土) 9:51 回答
【28626】Re:メニューバーの制限 BOCOTT 05/9/10(土) 15:07 質問
【28629】Re:メニューバーの制限 りん 05/9/10(土) 16:19 回答
【28663】Re:メニューバーの制限 BOCOTT 05/9/12(月) 10:31 お礼

52928 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free