こんにちは、デスクワークラボの吉井良平です。
エクセルファイルのバックアップをとる際に、「誰が共有ファイルを更新したのか」が分かった方が便利かな、と思いました。
会社などで、一つのエクセルファイルを複数の人が使う場合は、慣れていない人が使うとちょっと心配ですもんね。
今回も少しマクロを付け加えて「誰がいつ更新したのか」というログをとる方法も書いています。
では、さっそくやり方を見ていきましょう!
「ブックの共有」機能を使う
エクセルファイルの変更履歴は、エクセルの基本機能で履歴を残すことができます。
まず、「校閲」(こうえつ)タブの、「ブックの共有」を選んでください。
そうすると、ダイアログボックスが出てきますので、「複数のユーザーによる同時編集と、ブックの結合を許可する」にチェックを入れてください。
で、まだOKボタンは押さずに、「詳細設定」のタブに進みます。
変更履歴の保持日数などを変更して、OKボタンを押してください。
これだけで、変更履歴が残っていくようになりました!
この「ブックの共有」という機能は、複数の人が同時にそのブック(ファイル)を使うことができるようにする機能です。
私はどうも、一つのファイルを複数の人が同時に作業するという考え方になじめず、実際にこの共有機能は使っていません。
ただ実際には複数の人が同時に作業していなくても、(実質は一人ずつが作業していても)変更履歴は残るので、変更履歴を残すという意味では使える機能だと思い、紹介させていただきますね。
変更履歴を表示させる
残した変更履歴は、画面上に表示させることができます。
「校閲」タブから、「変更履歴の記録」→「変更箇所の表示」をクリックしてみてください。
そうすると、ダイアログボックスが出てきます。
試しに「変更箇所を画面に表示する」にチェックを入れてください。
そうすると、変更箇所がコメントで表示されるようになります。
あまり履歴を表示させると見にくいので、ふだんは「変更箇所を画面に表示する」のチェックを外しておいた方がよさそうです^^
変更履歴を削除することもできる
ファイルの管理者からすると、して欲しくない変更がされているときもあります。
そんな時は、後で変更履歴からその変更を削除することもできます。
「校閲」タブから、「変更履歴の記録」→「変更箇所の確認」をクリックしてみてください。
ブックを保存するか聞いてきますが、変更履歴を呼び出すためには「OK」を押します。
「いつ変更したのか」「誰が変更したのか」「どの範囲の変更を対象とするのか」を選んで、絞り込みをすることができます。
「反映する」は、その変更を許可します。
「反映しない」は、その変更を削除します。
「すべて反映する」は、すべての変更を許可します。
「すべて反映しない」は、すべての変更を削除します。
エクセルの「元に戻す」機能みたいに、変更する前に戻すことができるということですね。
ユーザー名を設定しておきましょう
これまでに紹介してきた変更履歴ですが、変更履歴にユーザー名を表示させたり、変更したユーザーを特定するためには、エクセルにユーザー名を設定しておく必要があります。
他にも、ユーザー名を設定しておくと、作成者や更新者に名前が残りますので、便利です。
まだ設定していない方は、この機会に設定しておいてくださいね。
ユーザー名の設定方法
「ファイル」タブ → オプションを選択してください。
オプションのユーザー名に、お好きな名前を入れてください。
仕事で使うので、あまりふざけた名前だと怒られるかもしれません^^
なお、このオプション画面で、フォントを変更したり、シートの数を設定したりできます。
ファイルの変更履歴のログをとるマクロ
ファイルの共有をしてしまうと、エクセルファイルの同時作業ができてしまうので、それだと困るという場合もありますよね。
誰かほかの人が使っている場合は、「読み取り専用」になって、ファイルの編集ができないようにしておくままの場合です。
(私も、正直なところ、よほどルールが徹底されていない場合は、ファイルの共有はおススメしません)
そんな時のために、ただ単純に「誰がいつ使ったか」だけが記録されていくマクロを作りました。
下記の手順で、マクロを設定してみてくださいね。
マクロ有効ブックとして保存する
変更履歴を自動的に保存するためにマクロを使いますので、ログをとりたいファイルをマクロ有効ブックにして保存してください。
変更履歴シートを作る
ログを記録していくためのシートを、新しく作ってください。
名前は何でも良いですが、「変更履歴」以外の名前にした場合は、後のマクロを少しご自分で修正してくださいね。
マクロを挿入する
Altキーと、F11キーを同時に押して、ビジュアルベーシックエディター(マクロを記録する場所)を立ち上げてください。
このような画面が出てきましたね。
(もし、ファイルの共有をしている場合は、マクロの編集ができないようになっているので、いったんファイルの共有を解除してください)
もし左側にツリー状の表示がない場合は、「表示」→「プロジェクトエクスプローラー」で、表示させてくださいね。
左側の部分で、「This Workbook」をダブルクリックしてください。右側に、コードが入力できる欄が出てきます。
右側の入力欄に、下記のコードをコピペして貼り付けてください。
Private Sub Workbook_Open() Dim UName As String Dim WS1 As Object Set WS1 = Worksheets("変更履歴") UName = CreateObject("Excel.Application").UserName Dim LastRow As Long Dim AllRow As Long AllRow = ActiveSheet.Rows.Count LastRow = WS1.Cells(AllRow, 1).End(xlUp).Row + 1 WS1.Cells(LastRow, 1) = LastRow - 1 WS1.Cells(LastRow, 2) = Date WS1.Cells(LastRow, 3) = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now) WS1.Cells(LastRow, 4) = UName End Sub
これはファイルを開いたときに、自動的にユーザー名と日時を記録しなさい、というマクロです。
もし、記録をとっていくシートを、「変更履歴」以外の名前にした場合は、上のプログラムの”変更履歴”のところを別の名前にしてください。
これで、ファイルを開いたら自動的にログがとれるようになりました!
まとめ
複数の人で同じエクセルファイルを使う場合は、こういった機能に頼る面もありますが、やはりみんなで事前に共通ルールを確認しておくことが大事です。
エクセルファイルの中に、一つ「このファイルの使い方」というルールを書いたシートを作っておくのも良いでしょう。
その上で、今回紹介した機能を使っていってくださいね。
また、最後に紹介したマクロは、作業記録としても使えそうです。
ファイルを閉じたときに自動的に閉じた時間を記録することもできますので、「誰がこのファイルで何分間仕事していたか」を計測することもできます。
今回はそこまでしませんが、私としても新たな発見でした!