• ベストアンサー

Excelで更新日時と更新者を表示させる

Excel97で、ファイルの最終更新日時と最終更新者を任意のセルに表示させようとしています。 組込み関数では無理なようなので、VBAで関数を作成し始めました。 日時については、FileDateTime(パス名)で日付のシリアル番号を表示させることができましたが、これをセルの書式設定ではなく、VBA内で日付型にさせたいのです。 更新者は、BuiltinDocumentProperties(7)というのを使用するようですが、記述方法がまったくわかりません。 VBAは初心者です。 Functionステートメントを使用していますがこれ自体は間違いないでしょうか。 ご指導願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.4

これでどうでしょう。 以下のようにすると、 =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)
回答No.5

いずれも、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

glimlach
質問者

お礼

簡潔に、そしてBuiltinDocumentPropertiesについて詳しい回答をいただきましてありがとうございました。 ただ残念なことにLastSaveTimeは#VALUE!になってしまいます。 理由は後日考えることにします。

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.3

VisualBasicEditerを起動して[標準モジュール]を作って下さい。 ここに Option Explicit Sub Auto_Open() Worksheets(1).Activate Cells(1, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(7) End Sub と書いて保存し一旦閉じてからもう一度開いてみてください。 Auto_Openはファイルを開いた時に実行されます。

glimlach
質問者

お礼

ありがとうございました。 今回希望の結果とは異なってしまうのですが、記述の仕方は今後の参考にさせていただきます。

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.2

下の回答と補足より、 これを、記述すればお望みの答えとなるでしょう。 Function Koushinsya() As String Koushinsya = ActiveWorkbook.BuiltinDocumentProperties(7) End Function

glimlach
質問者

お礼

ありがとうございます! 二行目の「ActiveWorkbook.」というところがわからなかったです。 加えてすみませんが、日付のほうは Function Nichiji() As Date としてもシリアル番号でしか表示されません。 何か方法をご存知でしょうか。

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.1

ヘルプを見た限りでは Worksheets(1).Activate Cells(1, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(7) で良いのではないでしょうか。 FunctionでもSubでも構わないと思います。 通常、処理結果を戻り値として返す必要があるときはFunctionを使います。

glimlach
質問者

補足

すみません。 初心者なので、記載頂いた二行をどのように使用すればよいのかがわかりません。 私のイメージでは、たとえば"Koushinsya"という関数か何かを作成しておいて、ワークシートの適当なセルに「=Koushinsya()」と入力するとそのセルに更新者名が表示される、というものを作りたいのですが・・・。

関連するQ&A