• ベストアンサー

エクセルVBAで「通知」を選ぶには?

fumufumu_2006の回答

  • ベストアンサー
回答No.2

こんなのではどうでしょう? >先に開いた人が閉じた場合、メッセージを出したいのです という質問に対する回答ではないのですが・・・ 普通にVBAで Workbooks.Open ファイル で開くと「通知」を選んだ時と同じく読み取り専用で開きます。 先に開いた物を閉じると、「xxx.xlsは編集できるようになりました。どうする?編集?キャンセル?」と表示します。 ただ、VBAからだと「xxx.xlsは編集のためロックされています」とメッセージが表示されません。 自前で開いて判定してメッセージを出します。 編集できるようになった時の処理はシステムに任せます。 Sub sample() Dim file As String file = "\\fumufumu\hoge\Book1.xls" 'ファイル Dim wb As Workbook Set wb = Workbooks.Open(file) If wb.ReadOnly = True Then 'もしも読み取り専用だったら If (GetAttr(file) And vbReadOnly) = 0 Then 'でもファイル属性は読み取り専用じゃなかったら MsgBox "誰か先に使ってるみたいです。" & vbCrLf & "使えるようになったら通知します。", , "使用中のファイル" End If End If End Sub 同じ事なんですが Private Sub sample() Dim file As String file = "\\fumufumu\hoge\Book1.xls" Workbooks.Open file If Workbooks(Mid(file, InStrRev(file, "\") + 1)).ReadOnly = True Then 'もしも読み取り専用だったら If (GetAttr(file) And vbReadOnly) = 0 Then 'でもファイル属性は読み取り専用じゃなかったら MsgBox "誰か先に使ってるみたいです。" & vbCrLf & "使えるようになったら通知します。", , "使用中のファイル" End If End If End Sub

believe_me
質問者

お礼

回答ありがとうございます。 「xxx.xlsは編集のためロックされています」が出なかったので、てっきりメッセージが返って来ないものと思い込んでいました。 今日職場で試してみたところ、メッセージが返って来ることを確認しました。 欲を言うと、誰が使っているか知りたいのですが、VBAからは無理なようですね。 コマンドラインか何かで外部的にエクセルを立ち上げて、誰が使っているか表示するようなことはできないでしょうか? とりあえず現在は、誰かが使っている時は、そのまま使うか、または一旦該当ブックを閉じ、該当のフォルダを開くエクスプローラを起動して、通常の開き方を選べるようにしています。

関連するQ&A

  • 共有しているエクセルファイルをOffce2003で開こうとすると他で開いていないのに読み取り専用になってしまいます。

    MS VistaでOffice2003Proを使用しています。 MS Windows2000 Serverでエクセルのファイルを共有しているのですが、他のPCで開いていないのにも関わらず、「xxx.xlsは編集のためロックされています。使用中は'xxx'です。[読み取り専用]で開くか、または、読み取り専用で開き、ほかの人がファイルの使用を終了したときに通知を受け取るには、[通知]をクリックします。」と出てしまいます。 毎回ではなく、頻繁にでます。また、すべてのファイルではなく、特定のファイルです。これらのファイルに共通していることは、VBAでマクロが組んであります。 ご回答よろしくお願いいたします。l

  • Excel VBA で困っています。

    Excel VBA で困っています。 下記のプログラムで、「名前を付けて保存」→「キャンセル」 を選択した場合のエラーは回避できたのですが、 「名前を付けて保存」→「保存」→「同じ名前のファイルが既に ありますが置き換えますか?」→「いいえ(またはキャンセル)」 の時にエラーが出てしまいます。 どう直したら良いでしょうか。 よろしくお願いいたします。 Public Sub SaveBook() Dim myBook As Variant '「名前を付けて保存」ダイアログ myBook = Application.GetSaveAsFilename("test.xls", _ "Excelファイル,*.xls", , "Excelブックを保存") 'キャンセル時の処理 If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub 'ブックの保存 ActiveWorkbook.SaveAs Filename:=myBook End Sub

  • エクセルの上書き保存でエラーがでます

    上書き保存の際、次の二つのエラーが別々のファイルで出ます。 普通に上書き保存が出来る方法を教えて下さい。 ●「~.XLS」への変更は、共有違反のため保存できませんでした。別のファイルに保存しなおしてください。 ●「~.XLS」は、読み取り専用です。「~.XLS」を保存するには、OKをクリックし、名前をつけて保存ダイアログボックスで新しい名前を保存してください。  次の画面↓ 使用中のファイルへは編集のためロックされています。使用者は~です。読み取り専用で開くかまたは、読み取り専用で開き他の人がファイルの使用を終了したときに通知を受け取るには「通知」をクリックします。 と表示されます。どうぞよろしくお願いいたします。

  • エクセルが編集できなくなった

    PCを起動してxlsファイルを開き編集して保存はできるのですが、2度目に開く時に 「ファイルは使用中です」 の小窓が出てきます 再起動すれば同じように1回目だけ編集、保存ができます 詳細は ファイルは使用中です ○×.xlsは現在、 △△ によって編集されています。編集する必要がある場合は、[通知]を選択すると、ファイルが保存されたときに編集が可能になったことを知らせるメッセージが表示されます。 右に読み取り専用、通知、キャンセルの3つのボタンがでてきます 通知、で開いても読み取り専用になってしまいます 昨日まで大丈夫でした お助け下さい WINXP、EXCEL97、VAIORX63

  • エクセルVBAについて

    エクセルVBAの名前を付けて保存について質問です。 名前を付けて保存するとき、保存先に同じ名前のファイルがあると 「この場所に○○というファイルがありますが置き換えますか?」 と表示され「いいえ」もしくは「キャンセル」を選択すると実行時 エラーが表示されます。 キャンセルしてもエラーが出ないような構文を書きたいのですが わかりません。 もし知っている方がいるようでしたら教えてください。 Dim MySavePath As String MySavePath = Application.GetSaveAsFilename(Date, "Excel ファイル (*.xls), *.xls") If MySavePath <> "False" Then ThisWorkbook.SaveAs MySavePath & ".xls" End If

  • エクセルが開けません。

    フロッピーにおとしていたExcelのファイルが開けられません。XXX名前.xlsにアクセスできません。ファイルは読み取り専用であるか?または読み取り専用の場所にアクセスしようとしています。 またはサ-バ-上に保存されているドキュメントから応答がありません。 と言う、警告ダイアログボックスが出て開けられません。 大事なファイルのため、救済方法を教えてください。

  • エクセル・VBA エラーメッセージの表示をしたい

    お世話になります。 エクセルのVBAで、他のエクセルファイルを開き、そのファイルに新しいデータをペーストし保存して閉じる命令文を入れてあります。このファイルは共有ドライブに入っており、複数の人で共有しております。 ファイルをマニュアルで開こうとした時に、すでに他の人が開いていると、"使用中のファイル"というメッセージが現れるのですが、VBAでは何も聞かれず"読み取り専用"として開かれ、そのファイルにデータをペーストして閉じてしまいます。当然後から開くとそのファイルには新しいデータが存在しておりません。 このような場合に、MsgBoxを開かせて他の人が開いていることを知らせ、Exit Subをしたいのですが、どのように書けばよろしいのでしょうか? よろしくお願いいたします。

  • EXCELのVBAでの保存方法

    EXCELで以下のように記述したところ、 「ファイルを置き換えますか」のメッセージの後に 「いいえ」か「キャンセル」を選択すると 「400」というエラーメッセージが表示されます。 「いいえ」か「キャンセル」を選択した場合は、 エラーメッセージを表示させずに、 特定のシートのセルA1にカーソルを移動させたいのですが、可能でしょうか? ご指導よろしくお願いします。 ________________________ FileA = Application.GetSaveAsFilename( _ InitialFilename:="C:\test.xls", _ fileFilter:="XLSファイル (*.xls), *.xls") ActiveWorkbook.SaveAs Filename:=FileA ________________________

  • ワードで編集中のメッセージ

    ワードのファイルを開こうとすると”使用中のファイルは編集中のためロックされています。読取専用で開くか又は読取専用で開き、他の人がファイルの使用を終了したときに通知を受けるには通知をクリックします”というメッセージと読取専用、通知、キャンセルというボタンがでてファイルを開くことができず、困っています。どうすれば直るでしょうか?また、これはどうしてこのようなことになってしまったのでしょうか?

  • 自分のExcelを読み取り専用で開くVBAは?

    Excel2003を使っています。 基本的なことで恐縮なのですが、 Excelファイルを手動で開くとき、読み取り専用にするような方法はないでしょうか。 ファイルのプロパティから「読み取り専用」にチェックを入れても NASの性質なのか、チェックが外れてしまいます。 (前提として、ここの変更は考えていません) そこで、「読み取り専用を推奨する」にしたのですが、毎回メッセージボックスが出るため 「読み取り専用にしない」を選択される場合もあります。 そのため、VBAにその指示を書き込む方法を探していました。 たとえば、以下のコードを試してみました。 しかし、開いたファイルに指示しているため、当然ながら以下のメッセージが出ます。 "***.xls は既に開いています。2重に開くと、これまでの変更内容は破棄されます。***.xls を開きますか?" Private Sub Workbook_Open() Dim Filename As String Filename = ThisWorkbook.FullName With Workbooks.Open(Filename, , True) .ActiveSheet.Activate End With End Sub 「読み取り専用を推奨する」をオンにして、Workbook.Openの引数である ignorereadonlyrecommended を設定する…というのも、 やはり上記の点で引っかかります。 何か方法はないものでしょうか。。。