プロが教える店舗&オフィスのセキュリティ対策術

Excel97で、ファイルの最終更新日時と最終更新者を任意のセルに表示させようとしています。

組込み関数では無理なようなので、VBAで関数を作成し始めました。
日時については、FileDateTime(パス名)で日付のシリアル番号を表示させることができましたが、これをセルの書式設定ではなく、VBA内で日付型にさせたいのです。
更新者は、BuiltinDocumentProperties(7)というのを使用するようですが、記述方法がまったくわかりません。

VBAは初心者です。
Functionステートメントを使用していますがこれ自体は間違いないでしょうか。

ご指導願います。

A 回答 (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
    • good
    • 3

いずれも、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
    • good
    • 1
この回答へのお礼

簡潔に、そしてBuiltinDocumentPropertiesについて詳しい回答をいただきましてありがとうございました。

ただ残念なことにLastSaveTimeは#VALUE!になってしまいます。
理由は後日考えることにします。

お礼日時:2002/05/13 16:06

VisualBasicEditerを起動して[標準モジュール]を作って下さい。


ここに

Option Explicit

Sub Auto_Open()

Worksheets(1).Activate
Cells(1, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(7)

End Sub

と書いて保存し一旦閉じてからもう一度開いてみてください。
Auto_Openはファイルを開いた時に実行されます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

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

お礼日時:2002/05/10 16:42

下の回答と補足より、



これを、記述すればお望みの答えとなるでしょう。

Function Koushinsya() As String
Koushinsya = ActiveWorkbook.BuiltinDocumentProperties(7)
End Function
    • good
    • 0
この回答へのお礼

ありがとうございます!

二行目の「ActiveWorkbook.」というところがわからなかったです。

加えてすみませんが、日付のほうは
Function Nichiji() As Date
としてもシリアル番号でしか表示されません。
何か方法をご存知でしょうか。

お礼日時:2002/05/10 16:01

ヘルプを見た限りでは



Worksheets(1).Activate
Cells(1, 1).Value = ActiveWorkbook.BuiltinDocumentProperties(7)

で良いのではないでしょうか。

FunctionでもSubでも構わないと思います。
通常、処理結果を戻り値として返す必要があるときはFunctionを使います。

この回答への補足

すみません。
初心者なので、記載頂いた二行をどのように使用すればよいのかがわかりません。

私のイメージでは、たとえば"Koushinsya"という関数か何かを作成しておいて、ワークシートの適当なセルに「=Koushinsya()」と入力するとそのセルに更新者名が表示される、というものを作りたいのですが・・・。

補足日時:2002/05/10 15:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A