2012-01-25 32 views
1

多数のユーザーが同じブックを読み取り専用で表示している間に、そのブックにポップアップで通知することができれば便利だと思っていましたワークブックが更新されるたびに画面が表示されます。そうすれば、彼らは彼らが見ているものをすぐに知ることができなくなる可能性があります。ありがとうExcel VBAはすべての読み取り専用閲覧者に通知します

答えて

5

ここでは、あなたが望むことをするための狡猾なやり方があります。考えは、FileDateTime(ThisWorkbook.FullName)、ブックのファイルが最後に変更された日付を取得することです。最初にブックを開くときにこの日付を取得し、ワークブックのセルに格納してから、FileDateTime(ThisWorkbook.FullName)が保存された日付と異なる日付を返すかどうか定期的にチェックします。

この例では、日付をSheet1.Range("A1")に保存していますが、隠しシートやどこにでも保存できます。あなたのThisWorkbookモジュールで

、次のようにWorkbook_Openイベントを定義:コードモジュールで

Private Sub Workbook_Open() 
    userNotified = False 

    'Store date last modified. 
    dateLastModifiedWhenOpened = FileDateTime(ThisWorkbook.FullName) 

    'How often will we check back? 
    runTimeInterval = TimeValue("00:00:05") 

    'Set timer for next check. 
    Application.OnTime Now + runTimeInterval, _ 
     "CheckWhetherThisWorkbookFileModifiedSinceOpening" 
End Sub 

を:

Public dateLastModifiedWhenOpened As Date 
Public nextRunTime As Date 
Public runTimeInterval As Date 
Public userNotified As Boolean 

Sub CheckWhetherThisWorkbookFileModifiedSinceOpening() 

    If Not FileDateTime(ThisWorkbook.FullName) = dateLastModifiedWhenOpened Then 
     MsgBox "This workbook file has been modified since you opened it." _ 
      & vbCrLf & "Modified at: " & FileDateTime(ThisWorkbook.FullName) 
     userNotified = True 
    Else 
     'Set timer for next check. 
     nextRunTime = Now + runTimeInterval 
     Application.OnTime nextRunTime, _ 
      "CheckWhetherThisWorkbookFileModifiedSinceOpening" 
    End If 

End Sub 

ブックを閉じるときにクリーンアップするために、良いアイデアかもしれません。あなたのThisWorkbookモジュールで:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    If Not userNotified Then 
     'Cancel the next check. 
     Application.OnTime nextRunTime, _ 
      "CheckWhetherThisWorkbookFileModifiedSinceOpening", , False 
    End If 
End Sub 
+0

私は助けに感謝しますが、私はこれをしないことにしました。私はちょうどそれがあまりにも複雑であることを発見ちょっとしたトリック(ブックを開いたときにタイムスタンプを付け、最後に保存したときにチェックする)を使って、開いた後に変更された場合にユーザーがドキュメントに変更を加えないようにすることを決めました。それは本当に私の元の質問に答えることはありませんが、それは私の問題を解決します。だから私はこのスレッドを閉じたと思う。 – Wes

+0

+1正直言って、上に示唆された方法は複雑ではなく、私はこれよりも簡単な方法は考えられません。 –

+0

これは他の人が探している回答かもしれないので、私はそれを受け入れます。 – Wes

1

レビューリボン、共有ブックでブックを共有できます。

詳細オプションでは、「変更を更新」を5分に設定できます。あなたの場合は、おそらく "ただ他のユーザーの変更を参照してください"したいです。

+0

それは長く複雑な話ですが、私は共有ブックを使用することはできません。要するに、このボードは本質的に電子かんばんであり、「Share Workbook」はシェイプへの変更のマージをサポートしていないからです。 – Wes

関連する問題