今回、8年分の出退勤情報を既定のエクセルシートに入力する作業を行った。

 そのエクセルシートは複雑な計算式が入っていて不要なところに入力できないようになっており、パスワードによるロックもかかっていた。
出勤時間、退勤時間をそれぞれの欄に入力する必要があるのだが12:30のように時と分の間にコロンを入れないとデータとして反映しない。

 そこで、別のエクセルシートを作成し1230と入れれば12:30となる変換式を組み込み、入力完了後にコロン付きのデータをコピーして目的のエクセルシートに貼り付けることにした。

 しかし、ここで問題発生、貼り付けたデータが他のセルの計算式に反映しない。
アクティブなセルを編集状態にしてEnterを押せば反映するのだが、8年分の出勤時間、退勤時間をそれぞれのセルで同じ作業を行うことを考えれば気が遠くなるような作業である。

 ググってみると、これはエクセルのバグっぽいことがわかった。

 Excelで「表示形式」のセル書式が反映されない場合の対処法
 http://qiita.com/eiryu/items/0d9413622c84d9514c27

 下記の小さなコードですがマクロやVBAが分かる人ならVBAの標準モジュールを挿入して、このコードを貼り付け、時刻の入ったセルの範囲指定をして、マクロからreconfirmを実行すると反映します。
パスワードロックがかかっていても、保存は不可だが、挿入、貼付け時の実行は可能でした。

 感謝。

Sub reconfirm()
For Each e In Selection
e.Value = e.Value
Next
End Sub


 現在、自宅のおそろしく古いパソコン、本体、基盤、関連パーツ、ケーブルなどを分別チェック中。
とりあえず、古いハードディスク20個ぐらい、中身を整理して除却できるようにした。
まだ、先はながそうだ。