- ベストアンサー
Excel VBAでWordファイルのコンテンツの作成日時を取得する方法
- Excel 2003のVBAを使用して、Word 2003で作成したファイル(拡張子doc)のプロパティの「詳細」タブに示される「コンテンツの作成日時」を取り出す方法を教えてください。
- 復元ソフトで復元したdocファイルの「コンテンツの作成日時」を取得することができません。現在の方法ではプロパティの「全般」タブの「作成日時」や「更新日時」しか取得できず、ファイルが作成された日時を取得することができません。
- 「コンテンツの作成日時」を取得して、ファイル名に追加するためにはどのような方法がありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下、DOCファイルの「組み込みプロパティ」を列挙するマクロです。 Private Sub Macro1() Dim OpenFileName As String Dim WordApp As Object Dim WordDoc As Object Dim PropertyList As Variant Dim PropertyValue As Variant Dim PropertyName As String Dim LineCount As Integer OpenFileName = Application.GetOpenFilename("Microsoft Word 文書,*.doc") Set WordApp = CreateObject("Word.Application") Set WordDoc = WordApp.Documents.Open(OpenFileName) Cells(1, 1).Value = "Name" Cells(1, 2).Value = "Number" Cells(1, 3).Value = "Value" LineCount = 1 On Error Resume Next For Each PropertyList In WordDoc.BuiltinDocumentProperties Cells(LineCount + 1, 1).Value = PropertyList.Name Cells(LineCount + 1, 2).Value = LineCount Cells(LineCount + 1, 3).Value = PropertyList.Value LineCount = LineCount + 1 Next WordDoc.Close WordApp.Quit Set WordApp = Nothing Set WordDoc = Nothing End Sub 上記では、For Eachで列挙していますが、単純に Private Sub Macro1() Dim OpenFileName As String Dim WordApp As Object Dim WordDoc As Object Dim CreateDate As Variant OpenFileName = Application.GetOpenFilename("Microsoft Word 文書,*.doc") Set WordApp = CreateObject("Word.Application") Set WordDoc = WordApp.Documents.Open(OpenFileName) CreateDate = WordDoc.BuiltinDocumentProperties(11).Value WordDoc.Close WordApp.Quit Set WordApp = Nothing Set WordDoc = Nothing MsxBox CreateDate End Sub でも構いません。
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
訂正。 誤:MsxBox CreateDate 正:MsgBox CreateDate 申し訳ありません。 「MS」まで打つと、指が勝手に「MSX」と打ってしまう世代なんです(^^;
- Hayashi_Trek
- ベストアンサー率44% (366/818)
ファイルの作成日はコピーで変わったりします。(作成日が更新日より新しくなる) 本当の作成日は、Word文書に組み込まれたプロパティから取得できそうです。 WordのVBAのヘルプからの抜粋と、作成日用に変更したサンプルです。(動作確認はしていません) 参考にして、ExcelからWordオブジェクトを使って取得してみてはどうでしょう。 Document.BuiltInDocumentProperties プロパティ 指定された文書にあらかじめ用意されているすべてのプロパティを表す DocumentProperties コレクションを返します。 次の使用例は、作業中の文書の作成日を表示します。 private const wdPropertyTimeCreated=11 '作成日時 Sub DisplayTimeCreated() Dim created As DateTime created = ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeCreated) MsgBox "This document contains " & created End Sub
お礼
速やかに回答を頂き、大変ありがとうございました。早速、戴いたプログラムを試させていただきましが、コンパイル エラーが出て進みません。デバックをして見ると、Dimのところで停止しています。Private Const wdPropertyTimeCreated = 11のステップが、プログラム外となっているので、Dimの後に入れてみましたが、結果は同じでした。引き続き、Document.BuiltInDocumentPropertiesの使い方を中心に、戴いたプログラムについて勉強しようと思います。貴重なご助言ならびにご示唆、ありがとうございました。
お礼
早速、回答をお寄せいただき、ありがとうございます。戴いたプログラムを走らせてみました。見事に、Word fileのプロパティ内容が全て取り出せ、感激しております。また、「コンテンツの作成日時」だけを取り出すものも合わせて提示して頂き感謝しております。また、わざわざタイプミスまで、ご丁寧にご連絡いただき、恐縮いたしております。これで、ここ1週間のネットでの検索、図書館通い、本屋通いから開放されます。VBA初心者ですので、戴いたプログラムの各ステップについて、勉強させて頂きたいと思っています。本当にありがとうございました。