Microsoft Teamsで『退席中』表示を回避する方法(Excelのみ利用)

  • URLをコピーしました!


在宅勤務を始めてMicrosoft Teamsが導入された方は多いはずですが、5分間パソコンを操作しないと『退席中』と表示が出ます。今回はTeamsで離席していても『退席中』を回避し、常に『連絡可能』と表示する簡単な方法を解説します。

目次

Teamsは5分で退席中と表示される

2021/2/19:STEP3のマクロ作成部分で正常に動かない可能性のある改行があったため、修正しました。また、より簡単な方法に書き換えました。

在宅勤務を始めてから、Microsoft Teamsを使って会議や資料のやり取りなどを使っている人も増えていますが、このTeamsにはある機能が付いています。

それは、5分間パソコンを触らないと『退席中』と表示されるのです。また、何分退席中かも出ます。Skypeなどは退席中と表示するまでの時間を変更する事が出来ましたが、Microsoft Teamsでは時間の変更ができなくなりました。

管理者からしたら配下社員が在宅でもしっかり仕事をしているか管理できるメリットもあります。ただ、在宅勤務でも少し休憩をしたり、子供の世話をするなどで少し席を外す事はあるはずです。ただ5分で『退席中』と表示さてしまうのでは少々短すぎるように感じます。

そこで、今回この『退席中』表示を出ないようにする方法を紹介しようと思います。

ちなみに、最近のTeamsではステータスの固定が可能になる設定が出現しました。しかし、企業側の設定によっては退席中表示が5分後にされる場合があります。
そのため、『退席中』ステータスを出したくない人は以下の方法で対策をしておくことをオススメします。

[smart_post_show id="23135"]

必要なモノは、エクセルのマクロ。

元ネタは海外の掲示板であるRedditです。

Teams now setting my status to "Away" after 10 minutes - how to stop this? : MicrosoftTeams

マクロでキーボード入力をすることでTeamsに『在籍中』と誤認させるようです。

STEP1 マクロの有効化

エクセル上に『開発』タブがあればこのステップは飛ばしてください。

デフォルトのままではマクロ機能を使うのに必要な『開発』タブが表示されていない場合があります。まずはこれを表示させましょう。

  1. ファイルをクリック
  2. オプションをクリック
  3. 『Excelのオプション』と言う新しいウィンドウが開きます
  4. 左側の『リボンのユーザー設定』をクリック
  5. 右上にある『リボンのユーザー設定』をメインタブを選択
  6. 『開発』にチェックを入れる
f:id:gazooooo:20200819190520j:plain

STEP2 操作画面を作成

  1. 新しいエクセルを作る
  2. 開発タブを開く
  3. デザインモードを選択
  4. 挿入⇒Active Xコントロールの左上『コマンドボックス(ActiveXコントロール)』をクリック
  5. 好きな場所にボタンを置きます。
  6. ボタンを右クリック⇒プロパティー
  7. (オブジェクト名)をcmdStartにする
  8. Captionをスタートにする(これは任意の名前で良いです)
  9. もう一つボタンを作り、(オブジェクト名)をcmdStopにする。Captionは任意の名前で良いです。

イメージ

[the_ad_placement id="adsense"]

STEP3 マクロを作成

  1. 開発タブの中の「デザインモード」をクリックして選択する。
  2. Start側のボタンをダブルクリックする。すると、Microsoft Visual Basic for Application - [任意の名前]が自動で開きます。
  3. 開いたらコードを入れる場所に既に
    Private Sub cmdStart_Click()

    End Sub
    が入っていますが、すべて消して、4.のコードに置き換えます。
  4. Private Sub cmdStart_Click()
    Dim x As Long

    For x = 1 To 1000000000
    Cells(7, 2) = "Running"

    Cells(1, 1).Select
    SendKeys "{down}"
    Application.Wait (Now + TimeValue("0:00:03"))
    DoEvents
    Next x
    End Sub
    Private Sub cmdStop_Click()
    Cells(7, 2) = "Not Running"

    End
    End Sub
  5. マクロ有効ブックで保存

完成

保存したら、一度開き直してください。

B7セルに"Not Running"と出ていたら読み込みは成功です。

Startを押して、B7セルが"Running"になりマウスアイコンがクルクル回るものになっていればマクロが動作開始しているという意味です。

停止するにはストップボタンを何回か連打してください。

注意点

バッテリー利用中は注意

マクロ動作中は論理コアの内1つを消費します。そのため、ノートPCなどで一般的な2コア4スレッドCPUでは25%近くCPUリソースを使います。バッテリー利用中に使うと充電が大きく減りますので注意してください。

友人や同期の話を聞いていると、上司が在宅勤務に対して理解の有無でこのような退席中表示など細かな事をチェックして指摘してくる傾向にあります。
もし自分の上司や先輩が在宅勤務に好意的では無い場合、変にチェックされていたりするかもしれませんので、このマクロはかなり使えると思います。

是非活用してみてください。

関連記事:Outlookの巨大なOSTファイルを管理者権限無しに移動させる方法

[smart_post_show id="23135"]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (11件)

  • とても参考になります!
    一点質問させて頂きたいのですが
    ThisWorkbookに記載通りのコマンドを入力しましたが
    Cellsの部分にコンパイルエラー「修正候補:ステートメントの最後」
    と表示されます。
    色々と試してみましたが私自身マクロに詳しくないのでお手上げ状態です。よろしければ何かアドバイス頂けないでしょうか。

    • 確認しましたが、確かにご指摘のエラーが発生する場合があります。
      記事の中で「STEP3」部分を作り直しましたので、初めから作り直すよう願いします。
      (既にボタンとか作っているとは思いますが、初めから作り作り直した方が確実なため)

  • ありがとうございました。状態が退席中にならず重宝しています。
    プログラムが全くわからないので教えていただきたいのですが
    STARTを押している状態でメール等を読んでいるとどんどん上に
    スクロールされてしまいます。
    これはExcelの今回のマクロは関係していますでしょうか?

    • スクロールされてしまうのは、マクロが関係しています。
      これは、キー操作をマクロで実行しているので、他のアプリケーションを使っているとそのキー操作が反映されてしまいます。
      何か操作されるときは退席中になる事は無いので対策としてはマクロをSTOPをしてから操作するとなります。

  • とても参考になります。
    手順通りそのまま利用させていただいたのですが、一度スタートするとストップボタンが効きません。
    デバッグすると、SendKeysのところで引っかかっているようです。試行錯誤しましたがプログラミングに疎く、自己解決できていない状態です。
    差し支えなければ、アドバイス等いただけますと大変助かります。

    • Escキーを長押ししたりすればそのうちコードが中断されるので、確実なものでは無いですが方法の一つとして…

  • とても参考になります。
    私が作成すると、カーソルが反応しなくなる、反応が遅くなり、ストップボタンを押せません。
    タスクマネージャーで切っています。

    • スリープだと動きません。
      基本的にスリープですとPCの電源は切れておりTeamsが起動していない事になります。
      ですので問答無用で『オフライン』になります。

  • 大変お世話になりましたが、筆者が書いている通り止める事が大変なので
    改良致しました。

    止める事が大変な原因として
    Application.Wait が応答を拒否するためです。

    以下のように改良する事でスムーズに利用できるように致しました。

    ①標準モジュールを作成(Model1が作成される)
    ②Model1に以下を記載(AddressOf を利用できるのはModle内のみ?)

    Option Explicit

    Public Declare PtrSafe Function SetTimer Lib “USER32” (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long

    Public Declare PtrSafe Function KillTimer Lib “USER32” (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

    Public mTimerID As Long

    Sub TimerProc()
      If mTimerID = 0 Then End ‘終了できない時の対策
      On Error Resume Next ‘デバッグ出すとExcelが固まるので
    ‘ セルA1に現在の時刻を出力
      Cells(1, 1) = “Running” & Format(Now(), “hh:mm:ss”)

    End Sub

    Sub TimerStart()
      If mTimerID 0 Then
        ’ 起動中は多重起動を避ける
        Exit Sub
      End If
    ‘ 1000ミリ秒で関数TimerProcを呼び出す?
      mTimerID = SetTimer(0&, 1&, 1000&, AddressOf TimerProc)
    End Sub

    Sub TimerStop()
    ‘ 処理を止める
      Call KillTimer(0&, mTimerID)
    ‘ 初期化
      mTimerID = 0
      Cells(1, 1) = “Not Running”
    End Sub

    ③ボタンの処理はModule1を呼び出すだけにする

    Private Sub cmdStart_Click()
    Call Module1.TimerStart
    End Sub
    Private Sub cmdStop_Click()
    ‘ 必ず止めること
    Call Module1.TimerStop
    End Sub

    • 処理が不足しておりました
      TimerProc の最後に以下を追加になります。
      SendKeys “{down}”

      ▽実際のコード
      Sub TimerProc()
        If mTimerID = 0 Then End ‘終了できない時の対策
        On Error Resume Next ‘デバッグ出すとExcelが固まるので
        ‘ セルA1に現在の時刻を出力
        Cells(1, 1) = “Running” & Format(Now(), “hh:mm:ss”)
        ‘ キー↓を押す
        SendKeys “{down}”
      End Sub

コメントする

目次