エクセル・ブック共有終了時のファイル名置き換え問題

このQ&Aのポイント
  • エクセルの「ブックの共有」をオンにすると、終了時にファイル名を置き換えるか確認するメッセージが表示されます。
  • エクセルのVBAでこのメッセージを非表示にする方法が分かりません。
  • Workbook_BeforeCloseイベントにApplication.DisplayAlerts = Falseを入れてみましたが効果がありませんでした。
回答を見る
  • ベストアンサー

エクセル・ブック共有のファイル終了時に

エクセルのVBA、万年初心者のものです。m(__)m エクセルのファイルをネットワーク上で「ブックの共有」で使いたいと思っているのですが、「ブックの共有」をオンにしていると、終了時に毎回「この場所に○○.xlsという名前のファイルが既にあります。置き換えますか?」と出てきます。 ファイル自体はマクロを有効にしていて、毎回、置き換える必要がないので「いいえ」しか選ばないので、なんとか、このメッセージをださないようにしたいのですが。 ThisWorkbook のPrivate Sub Workbook_BeforeClose の中に、Application.DisplayAlerts = False を入れてみたりしましたが、うまくいきません。 なにかいいメソッドがないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.4

> ファイルを再度開いたときに、もともとファイルに組み込んでいたマクロ自体も動かなくなってしまいました。 まず、これですがイミデイトウインドウで、 Application.EnableEvents = True を実行して復旧してください。 Application.EnableEventsはイベントを有効・無効を切り替えます。 Private Sub Workbook_BeforeClose(Cancel As Boolean)  ThisWorkbook.Close False End Sub これでもメッセージ出ますか?試してみましたが、私は出ませんでした。 このマクロはブックを保存しないで閉じるものです。

golgibody
質問者

お礼

どうも、なんどもていねいに回答いただいてありがとうございます。m(__)m Application.EnableEvents = True で復旧が必要なんですね(たしかめてみたら、戻りました)。Application.DisplayAlerts = False にして保存しなければ True を設定しなくてもいいか、みたいに考える初心者ですので、そういう初心者には「怖い」メソッドもあるのかと勉強になりました。(^^) スタンドアローンのPC上で、お教えいただいた方法でうまくいきます(シンプルで、とてもいいです)。月曜にネットワーク上でたしかめてみます(何かあれば補足で報告します)。 #エクセルのVBのヘルプ、お教えいただいた方法も含めていろいろ見てますが、問題解決上、ほとんど役に立ちませんね。(^^; ま、私の場合は、仕事というよりもほとんど趣味で作ってるのですが、毎回、難問続出(←知ってる人には単純なことなんでしょうけど)で、いい頭の体操?になります(問題が解決すると、単純にうれしいですし)。

golgibody
質問者

補足

ネットワーク上でお教えいただいたマクロを試してみました...が、やはり、当初の質問のメッセージが出ます。(^^; スタンドアローンのファイルだと出ないのですが、同時編集可とするネットワークですと、マクロの上を行く?機能があるようです(しろうとにはさっぱりわからず)。 ヘルプをみてると、メソッドの中に「CancelUpdate」という、いかにもそれらしい名前がありますが、項目だけでヘルプの内容もないし、実際に試してみても機能してませんでした(まったく勘違いしてるかもしれません)。 とりあえずご報告まで。

その他の回答 (3)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

先ほどの回答は意味を取り違えていました。失礼しました。 とりあえず、こんな感じでいかがでしょう。 Private Sub Workbook_BeforeClose(Cancel As Boolean)  Cancel = True  Application.EnableEvents = False  ThisWorkbook.Close False End Sub ただ、 Application.EnableEvents = False のまま、ファイルを閉じるのはあまり気が進みませんが。

golgibody
質問者

お礼

どうも#1といい、ごていねいな回答をありがとうございます。m(__)m 教えていただきましたマクロを組み込んでみました(初心者ゆえ、いまいち内容が理解できないままですが(^^;)。 たしかに、質問で出したメッセージは出なくなったのですが、ファイルを変更して終了する時に出る「’○○.xls’への変更を保存しますか?」というのは出てきます。 そうこうしているううちに、ファイルを再度開いたときに、もともとファイルに組み込んでいたマクロ自体も動かなくなってしまいました。(^^; とりあえず、お教えいただいた方法は、私の力量不足でうまくいかないようです。 #エクセルの、複数のユーザーが動じに編集できる「ブックの共有」とマクロの共存っていうの、知識がないせいもありますが(ヘルプも参考にならない)、ものすっごく違和感を感じています。(;_;) もう少しがんばってみようと思いますが、しろうとには無理かなと、なかばあきらめぎみです。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

先ほどの回答は意味を取り違えていました。失礼しました。 とりあえず、こんな感じでいかがでしょう。 Private Sub Workbook_BeforeClose(Cancel As Boolean)  Cancel = True  Application.EnableEvents = False  ThisWorkbook.Close False End Sub ただ、 Application.EnableEvents = False のまま、ファイルを閉じるのはあまり気が進みませんが。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

> 毎回、置き換える必要がないので「いいえ」しか選ばないので、 ということなので、ファイルを「読みとり専用」にしてはいかがでしょう。

golgibody
質問者

お礼

ご回答、ありがとうございました。 質問する前に、一度、ご指摘のファイルを「読みとり専用」にするとどうなるかトライしたことがあります。 エクセルのファイルは、数値を入れると値を返すようにしているので、「読みとり専用」にすると、その機能が使えなくなるのでダメでした。(;_;)

関連するQ&A

  • Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい

    Excel VBA ブックが本当に閉じられた時だけ別のブックを閉じたい A.xls B.xls と二つのブックがあります。 A.xlsが閉じられる時、B.xlsも同時に閉じたいです。 A.xlsに以下のマクロを入れました。 Private?Sub?Workbook_BeforeClose(Cancel?As?Boolean) ?Workbooks("B.xls").Close?SaveChanges:=False End?Sub 問題はA.xlsが保存してない場合、「A.xlsへの変更を保存しますか?」というメッセー ジが 出てきますが、そこでキャンセルを押された場合でもB.xlsが閉じられてしまいます。 A.xlsが本当に閉じられた時だけB.xlsを閉じたいのですが そのようなことは可能でしょうか?

  • VBAでファイルを保存せずに閉じた後の他ブックの挙動

    初めて質問させていただきます。 VBA初心者の為、質問自体に不足があるかもしれませんが、ご協力をお願い致します。 エクセル2000(SP3)で複数のブック(仮にA.xls,B.xlsとします)を起動した状態で、Aをマクロを使って保存せずに終了させたところ、Bの操作が出来なくなります。(セル選択等もできません。Bのsheetを選択するとアプリケーションエラーになってしまいます) 同Windows上に他アプリケーションが起動している場合、それらを一度選択してから再度Excelを選択すると、Bの操作が可能になります。 保存せずに終了させる為のマクロは次のとおりです。 ブックAのThisWorkbook内に記述しています。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Workbooks.count = 1 Then Application.DisplayAlerts = False Application.Quit Else ThisWorkbook.Close SaveChanges:=False End If End Sub 以上、よろしくお願い致します。

  • EXCELブックを保存しないで終了

    EXCEL2000で"A"というブックから"B"というブックを マクロのVBAから開きます。 両方のシートが開いた状態から,"B"のマクロより 両方のブック共に保存しないで、EXCEL自体終了するマクロ を"B"側に下のような感じで作成しました。 -------- EXCEL終了処理 ------------------ Application.DisplayAlerts = False ThisWorkbook.Saved = False Application.Quit ---------------------------------------- これで終了しようとすると、「"B"のブックを保存しますか?」というメッセージが表示されてしまいます。終了前のマクロ処理の中で"B"ブックを変更しているので、このようなメッセージが表示されると思うのですが、 Application.DisplayAlerts = False 命令は利かないのですか? どなたか教えて下さい。宜しくお願い致します。

  • EXCEL2007でワークブックのクローズ処理

    教えてください。 EXCEL2003形式ファイルのVBAに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Close SaveChanges:=False End Sub を記述してファイルを保存します。(作成は、EXCEL2003で保存します。) (仮にBook1.xlsとします。) このファイル(Book1.xls)をEXCEL2007で開きます。 このとき、別のファイル(仮にBook2.xlsとします。形式は、EXCEL2003です)をEXCEL2007で開きます。 で、Book1.xlsを×ボタンで終了すると、 EXCEL2007が異常終了します。 環境依存でしょうか? PCの環境に、EXCEL2003とEXCEL2007が混在しています。

  • エクセルでブックを閉じたときマクロを終了させるには

    現在、以下のようなマクロを組んでいます。 --------------------------------------- Dim 利用制限時間 As Integer Private Sub Workbook_Open() If Not ThisWorkbook.ReadOnly Then 利用制限時間 = 10 '分 + 起動時刻:Now 警告時刻 = Now + 10 * TimeValue("00:01:00") '分に変換 Application.OnTime 警告時刻, "ThisWorkbook.利用制限ご注意" End If End Sub Private Sub 利用制限ご注意() 警告文 = "共有ファイルを開いて" + CStr(利用制限時間) + "分経過しました。" + vbCrLf 警告文 = 警告文 + "使用しない場合は終了してください。" MsgBox 警告文, vbCritical, "共有ファイルの利用について" Workbooks("共有ファイル.xls").Close End Sub --------------------------------------- しかし、10分たたずにブックのみ終了し、エクセルのみの起動をしていても10分後には、「共有ファイルを開いて10分経過しました」と出てきます。 エクセルを終了させればよいのでしょうが、ブックを終了させただけでマクロも同時に終了できないでしょうか?

  • ブックの共有をしているexcelファイルの複製

    ブックの共有を設定しているbook1.xlsというexcelファイルがあります。 ブックの共有を行なっているとだんだんデータサイズが肥大化してくるので、その対策として 【1】"book1.xls"のシート単位で全て新しい"book2.xls"にコピーする。 【2】"book1.xls"を別のフォルダへ移動。 【3】"book2.xls"の名前を"book1.xls"に変え、ブックの共有設定を行う。 ということをしています。 これらの作業を自動で行えたらと思うのですが、 タスクスケジューラー?.batファイル?VBA?など、何をどう組み合わせたらよいのかがよくわかりません。 アドバイスよろしくお願いします。

  • EXCLEのVBAの”ブックの共有”の動きがおかしい。

    EXCLEのVBAの”ブックの共有”の動きがおかしい。 いつもとても助かっています。 今日もよろしくお願い致します。 EXCEL2000のVBAにて、 ThisWorkbookのWorkbook_Open()の中に記述することで、 原紙の書式ファイルを読み込んだ際に、 他のデータファイル(CSV形式)を取込み、 ファイルの各種編集後(フィルター、行、列の非表示、等)に 他のファイル名にて保管する処理をしています。 (使途を説明すると、原紙の書式ファイルは各部署の担当者が毎回処理して、 保管されたファイルは各部署のメンバーが入力する為のものです。) また、データファイルを読み込んだあとのファイルであるという判断を あるセルにデータがあるかで判断しています。 (理由は、標準モジュールを残し、 本当はThisWorkbookを削除したいけど削除しないで、動かないようにする為です) この運用をはじめて、何とか業務が回るようになったのですが、 部署によってはメンバーが多い為に、 ”ブックの共有”をして運用をはじめたのです。 すると、”ブックの共有”をして1回目に開くと、 ”ウィンドウ枠の固定”で処理するのですが、 これがWorkbook_Open()の初回の処理で設定している数行分だけずれて、 ファイルが開かれてしまいます。 ちなみに、Workbook_Open()に、 ”ブックの共有”を判断してマクロを抜ける処理を追加しても駄目です。 何が考えられるのでしょうか? 教えて下さい。 宜しくお願いします。 ***以下に、記述の一部を記します。 Private Sub Workbook_Open() : 'これを追加したけど、駄目です!! If ActiveWorkbook.MultiUserEditing Then Exit Sub 'データ取込後に別名保存したファイルを開くとデータ有りでEXIT If Sheets("data").Range("A1").Value <> "" Then Exit Sub Range("F11").Select ActiveWindow.FreezePanes = True : Rows("1:6").Select Selection.EntireRow.Hidden = True '別名保存 ActiveWorkbook.SaveAs Filename:= _ ・・・$ & "メンバー用" & ".xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False : Application.Quit End Sub

  • Excel VBAで別のブックからユーザーフォームの閉じる

    Excel VBAで別のブックからユーザーフォームの閉じたいのですが うまくいきません。 教えてください。 Private Sub CommandButton2_Click() Application.Visible = False Unload Workbook.("材料リスクマップ検索Ver2.xls")UserForm3・・・・※ Workbooks.Close userform3:=ThisWorkbook.Path & "あああ.xls" Workbooks("\いいい.xls").Close savechanges:=False UserForm1.Show vbModeless End Sub ※印のところが赤字にかわります。 コマンドボタン2は、いいい.xlsにあり、フォームを閉じたいのはあああ.xlsのUserform3です。 その後、ファイル名いいい.xlsは閉じます。 コードが間違っているかと思いますが、どんな風にすればよいかわかりません。初歩的なこととは思いますがよろしくお願い致します。

  • EXCEL 共有Bookにマクロを組み動作させると不具合が起こる

    EXCELの共有bookについて質問させていただきます。 共有BOOKにマクロを組んでいます。マクロはPrivate Sub Worksheet_Change(ByVal Target As Range)でセルに入力されると自動的に他のマクロが走り保存する使用で、4名~10名で頻繁に変更されます。その際に突然EXCELファイルの拡張子が『XLS』から『xls~RF******.tmp 』と変わってしまいます。保存しようとしても既に元の『XLS』ファイルと拡張子が変わっているため関連性がなくなり保存できなくなります。その後全ての人に一旦共有ファイルを閉じてもらい再度立ち上げると、ファイルがロックされています解除するか?などと質問してきて『はい』を選び再度保存をかけて初めて使用できるようになります。マクロをあまり組んでいないファイルではこのような事は発生しません。どなたか経験のある方はいらっしゃいますか?

  • 【Excel VBA】 ブッククローズ時の動作について

    環境: WindowsXP Office2003 ThisWorkBookモジュールに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ブックの保存を要求しない ThisWorkbook.Saved = True End Sub と記述しているのですが、保存の有無を聞かれます。 しかしながら、ブックにより聞かれない場合もあります。 原因として考えられるのは、どのようなことでしょうか?

専門家に質問してみよう