Excel VBA質問箱 IV

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

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


12322 / 13645 ツリー ←次へ | 前へ→

【11109】ブックの保存について furuya 04/2/28(土) 12:10 質問
【11111】Re:ブックの保存について ちん 04/2/28(土) 12:27 回答
【11118】SaveAs について furuya 04/2/28(土) 15:58 質問
【11120】Re:SaveAs について ちん 04/2/28(土) 16:17 回答
【11122】Re:SaveAs について ichinose 04/2/28(土) 17:58 回答
【11123】Re:SaveAs について furuya 04/2/28(土) 19:53 質問
【11127】Re:SaveAs について ichinose 04/2/28(土) 21:15 回答
【11128】Re:SaveAs について furuya 04/2/28(土) 22:19 質問
【11137】Re:SaveAs について クウガ 04/2/29(日) 11:15 回答
【11141】Re:SaveAs について ichinose 04/2/29(日) 12:17 発言

【11109】ブックの保存について
質問  furuya  - 04/2/28(土) 12:10 -

引用なし
パスワード
   フォーム上のコマンドボタンを押すとブックの終了処理にしたいと思います。たとえば、

ActiveWorkbook.SaveAs _
Filename:=ThisWorkbook.Path & "\"&ThisWorkbook.Name, _
FileFormat:=xlNormal,password:="test",riteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=True

上記の場合、既存のファイルと置き換えるかメッセージが表示されますが、このメッセージを表示しないで上書き保存する方法はありますか。
また、メッセージボックスで「いいえ」を選択するとエラーが起きてしまいます。この回避方法を教えて下さい。

【11111】Re:ブックの保存について
回答  ちん  - 04/2/28(土) 12:27 -

引用なし
パスワード
   こんにちは、ちんといいます。
furuya さんの記述だと、「名前をつけて保存」の指定です。
「いいえ」をクリックした時に、エラーにしたくないのであれば、
エラーになったとき、ON ERROR処理へ飛ばし、Resume NEXT で回避しては・・・

「上書き保存」でよいのであれば、
ActiveWorkbook.Save だけでいいです。

以上、

▼furuya さん:
>フォーム上のコマンドボタンを押すとブックの終了処理にしたいと思います。たとえば、
>
>ActiveWorkbook.SaveAs _
> Filename:=ThisWorkbook.Path & "\"&ThisWorkbook.Name, _
>FileFormat:=xlNormal,password:="test",riteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=True
>
>上記の場合、既存のファイルと置き換えるかメッセージが表示されますが、このメッセージを表示しないで上書き保存する方法はありますか。
>また、メッセージボックスで「いいえ」を選択するとエラーが起きてしまいます。この回避方法を教えて下さい。

【11118】SaveAs について
質問  furuya  - 04/2/28(土) 15:58 -

引用なし
パスワード
   保存時にバックアップファイルの作成と、パスワード設定をしたいと思っていますので、save ではなく、saveas にしました。
保存時に同じファイル名があるため、置き換えるかどうかのメッセージがでてきます。
ここで出てくるメッセージボックスで、「はい」、「いいえ」の戻り値を変数に格納して処理することはできないんですかね。

【11120】Re:SaveAs について
回答  ちん  - 04/2/28(土) 16:17 -

引用なし
パスワード
   furuya さんこんにちは、ちんです。
戻り値については、解答できません。

回避策としては、
1.保存する前に、ファイルが存在するかチェックし、
 存在したときは、ファイル削除後に「保存」を開始する。
2.「いいえ」・「キャンセル」を押すと、必ずエラー処理が発生するので、
 エラー処理で、ファイルを削除後に「保存」を開始する。

以上、

▼furuya さん:
>保存時にバックアップファイルの作成と、パスワード設定をしたいと思っていますので、save ではなく、saveas にしました。
>保存時に同じファイル名があるため、置き換えるかどうかのメッセージがでてきます。
>ここで出てくるメッセージボックスで、「はい」、「いいえ」の戻り値を変数に格納して処理することはできないんですかね。

【11122】Re:SaveAs について
回答  ichinose  - 04/2/28(土) 17:58 -

引用なし
パスワード
   ちん さん、furuya さん、こんにちは。
>戻り値については、解答できません。
>
>回避策としては、
>1.保存する前に、ファイルが存在するかチェックし、
> 存在したときは、ファイル削除後に「保存」を開始する。
>2.「いいえ」・「キャンセル」を押すと、必ずエラー処理が発生するので、
> エラー処理で、ファイルを削除後に「保存」を開始する。
ちんさんの1.のようにファイルの存在をチェックし、
コードでメッセージを表示する方法もあります。

'=========================================================
sub test()
  Dim savenm As String
  savenm = "D:\My Documents\TESTエリア\savetest2.xls"
  If chk_上書き(savenm) = True Then
   Application.DisplayAlerts = False
'   ↑を入れて強制的に上書き
   ThisWorkbook.SaveAs savenm
   Application.DisplayAlerts = True
   End If
End Sub
'=============================================================
Function chk_上書き(flnm As String) As Boolean
  chk_上書き = True
  If Dir(flnm) <> "" Then
   ans = MsgBox(flnm & " は既に存在します。上書きしますか?", vbOKCancel)
   If ans = 2 Then
     chk_上書き = False
     End If
   End If
End Function

一例ですが、確認してみて下さい。

【11123】Re:SaveAs について
質問  furuya  - 04/2/28(土) 19:53 -

引用なし
パスワード
   うまくいかないことがあります。
フォームにコマンドボタンを配置(終了処理)し、下記のマクロを割り当てています。
終了する際、上書きして終了するか否かメッセージボックスが表示るように作りました。
「はい」を選ぶと上書きして終了しますが、「いいえ」を選ぶとエクセルのファイルを保存するか否かのメッセージが出てきてしまいます。保存しないで終了する場合、メッセージを出さずに勝手に終了させたいのですが、どうすればいいのでしょうか。
ソースは下記の通りです。

Sub ファイル保存test()
 
Dim savenm As String
savenm = ThisWorkbook.Path & "\" & ThisWorkbook.Name
 
If chk_上書き(savenm) = True Then
   
  Application.DisplayAlerts = False
'   ↑を入れて強制的に上書き
  ThisWorkbook.SaveAs savenm, FileFormat:=xlNormal, Password:="test", WriteResPassword:="",ReadOnlyRecommended:=False, CreateBackup:=True
  Application.DisplayAlerts = True
  Application.Quit

  Else
  Application.DisplayAlerts = False
  Application.Quit

  End If

Application.DisplayAlerts = True
frmトップページ.Caption = "トップページ"
 
End Sub
'=============================================================
Function chk_上書き(flnm As String) As Boolean

  chk_上書き = True
  If Dir(flnm) <> "" Then
   ans = MsgBox(flnm & " は既に存在します。上書きしますか?", vbYesNo)
   If ans = 6 Then
     chk_上書き = True
   Else
   chk_上書き = False
   End If
  End If
End Function

【11127】Re:SaveAs について
回答  ichinose  - 04/2/28(土) 21:15 -

引用なし
パスワード
   ▼furuya さん:
こんばんは。

>うまくいかないことがあります。
>フォームにコマンドボタンを配置(終了処理)し、下記のマクロを割り当てています。
>終了する際、上書きして終了するか否かメッセージボックスが表示るように作りました。
>「はい」を選ぶと上書きして終了しますが、「いいえ」を選ぶとエクセルのファイルを保存するか否かのメッセージが出てきてしまいます。保存しないで終了する場合、メッセージを出さずに勝手に終了させたいのですが、どうすればいいのでしょうか。
>ソースは下記の通りです。
>
>Sub ファイル保存test()
> 
>Dim savenm As String
>savenm = ThisWorkbook.Path & "\" & ThisWorkbook.Name
> 
>If chk_上書き(savenm) = True Then
>   
>  Application.DisplayAlerts = False
>'   ↑を入れて強制的に上書き
>  ThisWorkbook.SaveAs savenm, FileFormat:=xlNormal, Password:="test", WriteResPassword:="",ReadOnlyRecommended:=False, CreateBackup:=True
>  Application.DisplayAlerts = True
'  Application.Quit
>
Else
'  Application.DisplayAlerts = False
'  Application.Quit
  thisworkbook.saved=true
>  End If
>
'Application.DisplayAlerts = True
>frmトップページ.Caption = "トップページ"
'↑これ、どんな意味があるのかわかりませんが・・・。
application.quit 
>End Sub
>'=============================================================
>Function chk_上書き(flnm As String) As Boolean
>
>  chk_上書き = True
>  If Dir(flnm) <> "" Then
>   ans = MsgBox(flnm & " は既に存在します。上書きしますか?", vbYesNo)
>   If ans = 6 Then
>     chk_上書き = True
>   Else
>   chk_上書き = False
>   End If
>  End If
>End Function
こんな感じでしょうか?
確認して下さい。

【11128】Re:SaveAs について
質問  furuya  - 04/2/28(土) 22:19 -

引用なし
パスワード
   「いいえ」を選んでブックを終了しようとすると、「ブックの変更を保存しますか。」のメッセージがでてしまいます。
このメッセージは、マクロを実行してブックを開いた場合、ブックに変更を加えていなくても、ブックを閉じるときに必ず表示されてしまうのでしょうか。このメッセージを出さない方法はあるのでしょうか。

【11137】Re:SaveAs について
回答  クウガ E-MAILWEB  - 04/2/29(日) 11:15 -

引用なし
パスワード
   furuya さん、こんにちは。


ActiveWorkbook.Close SaveChanges:=False

を入れてみてはいかがでしょうか?
違っていたらごめんなさい。

【11141】Re:SaveAs について
発言  ichinose  - 04/2/29(日) 12:17 -

引用なし
パスワード
   furuya さん、みなさん、こんにちは。

>「いいえ」を選んでブックを終了しようとすると、「ブックの変更を保存しますか。」のメッセージがでてしまいます。
>このメッセージは、マクロを実行してブックを開いた場合、ブックに変更を加えていなくても、ブックを閉じるときに必ず表示されてしまうのでしょうか。このメッセージを出さない方法はあるのでしょうか。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=11127;id=excel

で投稿したコードだけ新規ブックに適当な名前で保存して確認しています。
その際、「いいえ」を押してもメッセージの表示なしにExcelを終了しています。
まず、新規ブックにコードをコピーして確認して下さい。

もし、それでも駄目なら問題ありですが、これでうまくいった場合、
furuyaさんが作成中のブックには、何か別のコードが書かれていてそれが問題になっている可能性もあります。

「いいえ」ボタンを押されたときのコード、

thisworkbook.saved=true

は、ここでSavedというプロパティにTrueを設定しても
この後で何らかの原因でシート等に変更が施されるとFalseに変わってしまいます。
イベントでそのような処理がなされていないか確認してみて下さい。

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