- ベストアンサー
Excelで経過時間を記録する方法
- Excelで経過時間を自動的に記録するためのマクロの作り方を教えてください。
- 社内向けの動画配信で経過時間と話した内容を記録するため、Excelでマクロを作成したいです。
- Excelでボタンやショートカットを押すだけで経過時間をA列に自動的に記録するマクロを教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
http://kie.nu/xEt ほんとはあまり好きではない手段なのですが、 サンプルをアップロードしておきました。 ダウンロードパスは「tsubu」です。 念のため、ウィルス等対策してからダウンロードくださいませ。
その他の回答 (3)
- tsubuyuki
- ベストアンサー率45% (699/1545)
2003で書いて、2010でも動作確認をしたので、2007でも動くと思いますが・・・ いくつかご確認くださいませ。 (1)ActiveXコントロールのボタンを作る (上のフォームコントロールのボタンだとうまく動きません。) (2)プロパティを表示 (3)オブジェクト名に「Reset」を指定 (Captionはボタンに表示される文字です。 ここに「Reset」と指定しても動きません。) ボタンを配置したシートのプロシージャに、先述のコードをそのまま貼り付け で動くと思いますよ。 とりあえず > 「実行時エラー'1004;' > 指定した名前のアイテムが見つかりませんでした。」 > とエディタが開き「デバックボタン」を押すと、 > Sub Reset_Click()内の、 > ActiveSheet.Shapes.Range("SplitTime").Visible = True 「SplitTime」と言う名前のオブジェクトが無いよ、と言うエラーですので、 上記手法でボタンを作ってオブジェクト名を定義すれば大丈夫と思いますよ。
お礼
ありがとうございます。 もう一息で出来そうです。 今日は、ちょっと疲れてて、これ以上出来そうにありませんので、 明日作成させて頂きます。
- tsubuyuki
- ベストアンサー率45% (699/1545)
例えば、以下。 ActiveXコントロールによるコマンドボタン ・Reset ・SplitTime ・PauseTime ・RestartTime の4つを用意します。 該当シートのシートモジュールに Private Declare Function GetTickCount Lib "kernel32" () As Long Private ATime As Long, BTime As Long, CTime As Long, PTime As Long, RTime As Long Sub Reset_Click() ATime = GetTickCount With Columns("A") .ClearContents .NumberFormatLocal = "[h]:mm:ss" End With Range("A1") = "経過時間" Range("B1") = "講義内容" Range("A2") = "0" Range("B2") = "再生開始" PTime = 0: RTime = 0: CTime = 0 ActiveSheet.Shapes.Range("SplitTime").Visible = True ActiveSheet.Shapes.Range("PauseTime").Visible = True ActiveSheet.Shapes.Range("RestartTime").Visible = False End Sub Sub SplitTime_Click() Dim BMin As Long, BSec As Long BTime = GetTickCount - ATime - CTime BMin = Int(BTime / 1000 / 60) BSec = Int(BTime / 1000) Mod 60 With Range("A" & Rows.Count).End(xlUp).Offset(1, 0) .Value = "0:" & BMin & ":" & Format(BSec, "00") .NumberFormatLocal = "[h]:mm:ss" .Offset(0, 1).Select End With End Sub Sub PauseTime_Click() PTime = GetTickCount ActiveSheet.Shapes.Range("SplitTime").Visible = False ActiveSheet.Shapes.Range("PauseTime").Visible = False ActiveSheet.Shapes.Range("RestartTime").Visible = True End Sub Sub RestartTime_Click() RTime = GetTickCount ActiveSheet.Shapes.Range("SplitTime").Visible = True ActiveSheet.Shapes.Range("PauseTime").Visible = True ActiveSheet.Shapes.Range("RestartTime").Visible = False CTime = CTime + RTime - PTime End Sub を貼り付けます。 Resetボタンを押すと、カウントを開始。 SplitTimeボタンを押すと、経過時間を入力し、B列にフォーカス。 PauseTimeボタンで一時停止(カウント停止)。 RestartTimeボタンで再開(カウント再開)。 以上の機能を持たせてあります。 が、動画プレイヤーとの連携は(私の実力では)やはり無理です。 賢人の来訪をお待ちくださいませ。
お礼
素早い回答ありがとうございます。 早速動作確認しました。 excelは2007なのですが、どうもうまく動かないようです。 ------------------------------------------------------- resetボタン押下後、 「実行時エラー'1004;' 指定した名前のアイテムが見つかりませんでした。」 とエディタが開き「デバックボタン」を押すと、 Sub Reset_Click()内の、 ActiveSheet.Shapes.Range("SplitTime").Visible = True ↑ココがハイライトされます。 マクロを停止して、SplitTimeボタンを押下すると、 2:nn:nnと、おそらくマクロを作成した時間を基準に、経過時間を記載しているようです。 PauseTime、RestartTimeボタンを実行しても、同じようにエラーが出ます。 ------------------------------------------------------- Fixできれば、かなり便利に使えそうですが、私にはスキル不足で、すべて読み解くことはできません。 せめてReset、Splitボタンだけでも正常に使えるようにできないでしょうか。 なにとぞお願いいたします。
- tsubuyuki
- ベストアンサー率45% (699/1545)
つまり、ストップウォッチですね? 「EXCEL VBA ストップウォッチ」で検索すると、 サンプルがゴロゴロ落ちています。 お好きなものをお好みにアレンジしてお使いになると良いかと思います。 そこそこのコードと、それなりの説明が必要ですので、 ここでは割愛させていただきます。 が、おそらく「動画を再生している時間だけ、カウント」は難しいと思います。 つまり、一時停止や巻き戻し・早送りなどで実際の再生時間を合わなくなる気がします。 それなら、動画プレイヤーの「経過時間」は一時停止などでも狂いませんし、 動画プレイヤーだけで完結できますので、こちらの方が有用と思います。 ところで、現在時刻をエクセルでメモして、会話の内容はどうされるのでしょう? これを結局手書きでメモしてみたり、エクセルで打ち込んだり・・ だとすると、ストップウォッチ機能は何も役に立たないのではないでしょうか。
お礼
早速の回答ありがとうございます。 >ところで、現在時刻をエクセルでメモして、会話の内容はどうされるのでしょう? わかりづらくてすみません。 目的は、後で、「あの内容は削除しておいて」とか、「あそこにテロップを加えて」とか依頼されると、もう一度動画を最初からみなければならなくなり、非常に手間なので、オリジナルの動画の「経過時間」に「講義内容」を添えて管理しています。 例) Z1 に、講義がスタートした時間。マクロ実行(計測開始) A列に、経過時間(現在時刻 - Z1(分:秒))checkマクロボタン実行 B列に、手書き(手打ち)で会話の内容 A(経過時間) B(講義内容) 0:25 貸借対照表の説明 3:11 資産とは 5:36 損益計算書の注意点 12:35 講師のジョーク >一時停止や巻き戻し・早送り 計測を一時停止するボタンなどあればかなり便利になると思いますが、ありますでしょうか。 >動画プレイヤーの「経過時間」は…狂いませんし、… 経過時間を手書きもしくは手打ちする時間が最近とても惜しくかんじます。
お礼
素晴らしいです! まさにこういうのが欲しかったです。 これで私の仕事も変わります。 本当にありがとうございます。