現在時刻の入力について †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | teru |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2008-05-15 22:40:48 (木) |
OS | win xp |
依存するページ | |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
作業日報作成に活用しようと考えてます。
1つの作業ごとに開始と終了の時刻を入力したいのですが、
ExcelのようにCtrl+:という感じで極力少ない操作で入力できないのでしょうか?
よろしくお願いします。
ショートカットへの割り当て †
M.Kamataki (2008-05-16 01:06:14 (金))
については、そのものズバリの要望がIssueTrackerに登録されているようです。
"add keyboard shortcuts to add the current date and current hour"
http://ja.openoffice.org/issues/show_bug.cgi?id=1704
現状の回避策については、さらに情報を求めます。この場合、NOW()が使えないのがつらいですね。NOW()はシートの変化で更新されてしまうので。
ありがとうございます †
teru (2008-05-16 10:37:08 (金))
早い対応どうもありがとうございました
翻訳ページで読んでみましたが今ひとつピンとこないです。
現状では無理なのでしょうか
マクロによる実現例 †
M.Kamataki (2008-05-16 11:45:16 (金))
上記で紹介したIssueの課題のタイプが「機能」になっています。これはCalcに同等の機能がないということです。
そこでマクロで実現できないかと、サンプルを作成してみました。マクロ入りなので、オプションのセキュリティでマクロのセキュリティを適切に設定しなおす必要があります。
サンプルfaq4_1023_1.ods
NOW()関数で現在の日時を得られるので、同関数を邪魔にならない適当にセルに設定し、タイムスタンプを記録したいセルに数値だけコピーするというアイデアです。
マクロは、サンプルファイルを開いたら、適当なセルを選択し、「ツール」−「マクロ」−「マクロの実行」を選択、マクロの選択ダイアログでは「faq4_1023_1」−「TimeStamp」−「Module1」−「Main」を選んで「実行」ボタンをクリックします。
なお、Calcで「ツール」−「カスタマイズ」で、上記のマクロを空いているキーボードショートカット(Ctrl+Insertあたり)へ割り当てれば、Excelに近くなります。ただキーボードショートカットはファイルへの保存ではなく、Calc全体になります。マクロはマイマクロに登録しなおしたほうが使い勝手が良くなります。
素人のマクロ作成記 †
M.Kamataki (2008-05-16 11:53:37 (金))
マクロの記録を修正して作成しました。あらかじめH2セルに"=NOW()"を設置。このセルはシートが更新されると日時が変化します。次にA2セルをカレントセルにして、以下のようなステップでマクロを記録しました。
- カレントセルの内容を削除
- セルの書式を日時に設定
- H2セルに移動
- 内容をコピー
- A2セルに移動
- 「形式を選択して貼り付け」を選ぶ
- 「数」を選択
これでマクロの雛形ができます。カレントセルのアドレスの取得ははにゃ?さんのサイトの以下のページを参考にしました。
OOoBasic/Calc/address:
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FCalc%2Faddress
素人の素人らしいところ †
M.Kamataki (2008-05-16 12:04:12 (金))
で、今更ながらもっと良い方法に気づきました。1.と2.の間に「カレントセルに"=NOW()"を設定し内容をカット」というステップを追加すれば、H2というテンポラリ的なセルを使わずに済みますね。当然、3、4、5はいりません。
これで直接「マイマクロ」に登録すれば、どのようなシートにも対応でき、マクロの修正もそんなに多くないと思います。
拡張機能にしてみました †
M.Kamataki (2008-05-16 13:34:50 (金))
検証のために拡張機能にしてみました。2.4だけでなく、2.3.1、3.0ベータ版でも動作しています。
TimeStamp拡張機能TimeStamp.oxt
マクロの記録で作成されたものは、セルの移動が無駄に行われ、期待した動作になっていなかったので修正しています。修正は無駄な部分をコメントアウトしただけです。
わたしはカスタマイズでCalcのショートカット「Ctrl+Insert」に割り当てました。
拡張機能修正 †
M.Kamataki (2008-05-16 14:14:29 (金))
すでにセルに値がある場合に、タイムスタンプが設定できなかったので、修正版と差し替えました。本日午後2時5分頃までにお一人の方がダウンされていました。申し訳ありませんが、再ダウンをお願いします。
もう一度、マクロの記録による手順を書いておきます。(今度はなぜか修正する必要がなかったのが不思議)
- カレントセルの内容をカット(拡張機能修正版で加えた部分)
- カレントセルの内容を削除
- カレントセルに"=NOW()"を設定
- カレントセルの内容をカット
- カレントセルの書式を日時に設定
- 「形式を選択して貼り付け」を選ぶ
- 「数」を選択
Excel での時間と日付 †
はにゃ? (2008-05-16 20:59:41 (金))
Excel で上記のショートカットキーを利用して時間と日付を挿入すると、日付ではシリアル値の整数部分のみ、時間ではシリアル値の小数点以下の部分のみが挿入されるようです。
Basic の NOW ランタイム関数で現在のセルに入力するマクロを作成してみました。
date_time.ods
(Basic の NOW ランタイム関数はシート関数の NOW を com.sun.star.sheet.XFunctionAccess から呼び出したときと同じシリアル値を返します。)
OOo Basic で書く場合、日付データでは、ツール - オプションで OpenOffice.org Calc - 計算式 - 日付の設定を考慮する必要があるようです。Basic で XFunctionAccess を利用する場合でさえ。上記ファイルでは考慮してあります。