- ベストアンサー
Excelで更新日時と更新者を表示させる
Excel97で、ファイルの最終更新日時と最終更新者を任意のセルに表示させようとしています。 組込み関数では無理なようなので、VBAで関数を作成し始めました。 日時については、FileDateTime(パス名)で日付のシリアル番号を表示させることができましたが、これをセルの書式設定ではなく、VBA内で日付型にさせたいのです。 更新者は、BuiltinDocumentProperties(7)というのを使用するようですが、記述方法がまったくわかりません。 VBAは初心者です。 Functionステートメントを使用していますがこれ自体は間違いないでしょうか。 ご指導願います。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
これでどうでしょう。 以下のようにすると、 =Nichiji("C:\test.xls") 結果:yyyy/mm/dd hh:mm:ss と言う風に表示されます。 サンプル: Function Nichiji(strFilePath) As String Dim strDate As String strDate = FileDateTime(strFilePath) Nichiji = CStr(strDate) End Function
その他の回答 (4)
- nishi6
- ベストアンサー率67% (869/1280)
いずれも、BuiltinDocumentPropertiesを使って表示してみました。ユーザー定義関数です。 日付は関数内で表示を指定しています。 =LastAuthor()、=LastSaveTime() として使います。 '最終更新者 Public Function LastAuthor() With ThisWorkbook LastAuthor = .BuiltinDocumentProperties.Item(7) End With End Function '最終更新日時 Public Function LastSaveTime() With ThisWorkbook LastSaveTime = Format(.BuiltinDocumentProperties.Item(12), "yyyy/mm/dd h:mm:ss") End With End Function BuiltinDocumentPropertiesのItem番号と意味は、抜粋すると、 ( 3)Author ( 7)Last author ( 9)Application name (11)Creation date (12)Last save time (17)Security (21)Company です。 >BuiltinDocumentProperties(7)というのを使用するようですが、記述方法がまったくわかりません 組込みのプロパティーを全てアクティブシートのA、B、C列に書き出してみました。(記述方法の例です。) ↓ Sub printDocumentPropertries() Dim itm As Integer Dim rw As Integer On Error Resume Next With ThisWorkbook For itm = 1 To .BuiltinDocumentProperties.Count With .BuiltinDocumentProperties.Item(itm) rw = rw + 1 Cells(rw, 1) = "'(" & itm & ")" Cells(rw, 2) = .Name Cells(rw, 3) = .Value End With Next End With End Sub
- TMINET
- ベストアンサー率32% (45/140)
VisualBasicEditerを起動して[標準モジュール]を作って下さい。 ここに Option Explicit Sub Auto_Open() Worksheets(1).Activate Cells(1, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(7) End Sub と書いて保存し一旦閉じてからもう一度開いてみてください。 Auto_Openはファイルを開いた時に実行されます。
お礼
ありがとうございました。 今回希望の結果とは異なってしまうのですが、記述の仕方は今後の参考にさせていただきます。
- BlueRay
- ベストアンサー率45% (204/453)
下の回答と補足より、 これを、記述すればお望みの答えとなるでしょう。 Function Koushinsya() As String Koushinsya = ActiveWorkbook.BuiltinDocumentProperties(7) End Function
お礼
ありがとうございます! 二行目の「ActiveWorkbook.」というところがわからなかったです。 加えてすみませんが、日付のほうは Function Nichiji() As Date としてもシリアル番号でしか表示されません。 何か方法をご存知でしょうか。
- TMINET
- ベストアンサー率32% (45/140)
ヘルプを見た限りでは Worksheets(1).Activate Cells(1, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(7) で良いのではないでしょうか。 FunctionでもSubでも構わないと思います。 通常、処理結果を戻り値として返す必要があるときはFunctionを使います。
補足
すみません。 初心者なので、記載頂いた二行をどのように使用すればよいのかがわかりません。 私のイメージでは、たとえば"Koushinsya"という関数か何かを作成しておいて、ワークシートの適当なセルに「=Koushinsya()」と入力するとそのセルに更新者名が表示される、というものを作りたいのですが・・・。
お礼
簡潔に、そしてBuiltinDocumentPropertiesについて詳しい回答をいただきましてありがとうございました。 ただ残念なことにLastSaveTimeは#VALUE!になってしまいます。 理由は後日考えることにします。