• ベストアンサー

Excel-VBA コンテンツの作成日時

ファイル(Excel/WORDなど)のプロパティの詳細の 「コンテンツの作成日時」、「前回保存日時」、「前回印刷日時」 を、VBAで取得/設定する方法を知りたいのですが? サンプルコードを提示していただければ大助かりです。 ご教授よろしくお願いします。

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

  • ベストアンサー
回答No.1

'Excel 2003でテスト 'http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.builtindocumentproperties%28v=vs.80%29.aspx 'もどってくる値が、Object扱いで、どういう文字列になるのか予測がつかないのが個人的な難点。 Sub Main() Cells(1, 1).Value = ThisWorkbook.BuiltinDocumentProperties("Creation Date").Value Cells(1, 2).Value = ThisWorkbook.BuiltinDocumentProperties("Last Save Time").Value End Sub '============================== 'Word 2003でテスト。何故かこっちには列挙体が定義されている。 'http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.builtindocumentproperties%28v=vs.80%29.aspx 'http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdbuiltinproperty.aspx Sub Main() MsgBox (ThisDocument.BuiltInDocumentProperties(WdBuiltInProperty.wdPropertyTimeCreated).Value) MsgBox (ThisDocument.BuiltInDocumentProperties(WdBuiltInProperty.wdPropertyTimeLastSaved).Value) End Sub 'リファレンス中のサンプルはVB.NET向けなので、そのままでは使えない。 'リファレンスにもあるとおり、その形式がサポートしないようなプロパティのValueを参照するとエラーになるので注意。

sakuraww
質問者

お礼

himajin100000さん早々の回答有難うございました。 早速試行したのですが非力にて結果を出すのに時間がかかりました。 <試行結果Excel-VBA> Sub Propertie表示() Dim wTarget As String Dim wBookname As String Dim R As Long Dim P As Variant On Error Resume Next wTarget = Application.GetOpenFilename("Excel Files(*.xls), *.xls") If wTarget = "" Then Exit Sub Range("A2:B50").ClearContents Cells(1, 1).Value = "BuiltinDocumentProperties" Cells(1, 2).Value = "DATA" R = 2 Workbooks.Open wTarget wBookname = ActiveWorkbook.Name Workbooks(ThisWorkbook.Name).Activate For Each P In Workbooks(wBookname).BuiltinDocumentProperties Cells(R, 1).Select Cells(R, 1).Value = P.Name Cells(R, 2).Value = Workbooks(wBookname).BuiltinDocumentProperties(P.Name).Value R = R + 1 Next Workbooks(wBookname).Close End Sub

関連するQ&A

  • Excel VBA コンテンツの作成日時の取り出し

    Word 2003で作成したファイル(拡張子doc)のプロパティの「詳細」タブに示される「コンテンツの作成日時」をExcel 2003のVBAで取り出すことができません。これまでに、(1)FileDateTime (2)FSOのDateCreated (3)FSOのDateLastModified などを試しましたが、得られたのはいずれもプロパティの「全般」タブの「作成日時」や「更新日時」で、「コンテンツの作成日時」ではありませんでした。対象としているdoc ファイルは、復元ソフトで復元したもので、唯一、「コンテンツの作成日時」だけが、今回、取り出したい、最初にファイルが作成された日時が保存されており、「全般」タブの「作成日時」などは、ファイルを復元した日や操作した日となっています。どうしても「コンテンツの作成日時」を取り出して、ファイル作成日をファイル名に追加し、新しいファイル名にしたいと思っています。よろしくお教えいただきますようお願いいたします。

  • エクセルVBAで、ファイルの情報の「作成日時」取得

    エクセル2000です。 メニューからファイル、プロパティでダイアログを呼び出すと、タブが「ファイルの情報」、「ファイルの概要」、「詳細情報」、「ファイル構成」、「ユーザー設定」と並んでいます。 そのうちの「ファイルの情報」タブと、「詳細情報」タブの両方に「作成日時」と「更新日時」があります。 同じ「作成日時」がなぜ二つあるのか、どう違うのが、試してみると更新日時はどちらも同じですが、作成日時が「詳細情報」はそのエクセルを初めて作成した日時、「ファイルの情報」は、そのエクセルに名前を付けて保存した日時のようです。 上記の理解で合っていますか? 次にそのエクセルBOOKに記述したVBAで作成日時を取得しようとした場合、 ActiveWorkbook.BuiltinDocumentProperties(11).Value で取得できる作成日時は、「詳細情報」にあるほうの日時のようですが、「ファイルの情報」にある作成日時(名前を付けて保存した日時)をVBAで取得するにはどうしたらよいのでしょうか? なにとぞよろしくお願い申し上げます。

  • excelの前回保存日時を取得したい

    office2002を使用しています。 VBAでCreateObjectを使用してexceで作成したファイルlのプロパティの作成日、更新日、アクセス日は取得でくるのですが、プロパティ、概要、詳細設定にある前回保存日時を取得したい場合はどうすればよいのでしょうか。 宜しくお願いします。

  • Excel-VBA フォルダの日時を取得・設定

    目的は、Excel-VBAでフォルダのタイムスタンプを「取得・設定」したいのですが、 非力にてクマロの書き方が分かりません。 何方かご教授よろしくお願いいたします。 下記はサンプルコードを探していて、これだと目に留まったのですが、 Excel-VBAマクロで実行するコードに書き直す事ができませんでした。 '--------------------------------------------- 'VB.NET フォルダのタイムスタンプ取得・設定(6個)-(SNo.032) 'http://hanatyan.sakura.ne.jp/dotnet/index.html '--------------------------------------------- 'Sample1.フォルダの作成日時を取得する Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim dt As DateTime dt = System.IO.Directory.GetCreationTime("c:test\") Debug.WriteLine(dt) End Sub '--------------------------------------------- 'Sample4.フォルダの作成日時を設定する Private Sub Button4_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button4.Click 'Directory.SetCreationTime メソッド System.IO.Directory.SetCreationTime("c:test\", DateTime.Now) End Sub '--------------------------------------------- 以上

  • Excel-VBA 撮影日時の取得

    次の様な「For-Next」で撮影日時を取得しています。 "D:\Test1\"配下の"D3001.JPG"がヒットするまでループする…廻りくどい。 【やりたい事】 For-Nextを使わない。フルパス「"D:\Test1\D3001.JPG"」を指定して撮影日時を取得するには、どの様にソースコードを書けばよいのか分かりません。サンプルコードを提示いただければ有難いのですが、 誰かご教授宜しくお願いいたします。 '----------------------------------- Sub 撮影日時表示() Const sFile = "D3001.JPG" '…ターゲットファイル Dim wFile As Variant Dim wDate As Date With CreateObject("Shell.Application") For Each wFile In .Namespace("D:\Test1\").Items wDate = wFile.ExtendedProperty("WhenTaken") If wFile.Name = sFile Then MsgBox wFile & " 撮影日時: " & wDate Exit For End If Next End With End Sub '-----------------------------------

  • Word vbaからexcel vbaへ値を渡すことができますか?

    Word vbaからexcel vbaへ値を渡すことができますか? 現在Wordでvbaを組んでいますが、Wordで取得した値をexcel vbaで利用したいのに変数の値がnullになってしまい四苦八苦しています。Application間で値を渡すには何か特別な処理がいるのでしょうか?(参照は設定済みです) やりたい事は、Wordで「ShipTo」文字列をsearch→後ろの番号を変数へ格納→excel vbaを起動→シートの表中からWordで取得した番号を元に文字列を検索しセルに入れる(VLOOKUPを使用)→セルの文字列をWord vbaへ返しWord側で利用、という処理です。excel vbaの起動は以下のように記述しています。 ------------------excelVBAの起動 Sub getExcelTable() Dim xLobj As Object, myObj As Object Set xLobj = CreateObject("excel.application") xLobj.Visible = True Set myObj = xLobj: workbooks.Open (ThisDocument.Path & "\sample.xls") myObj.Run ("'sample.xls'!getStr") MsgBox strA ←これがでない MsgBox strB ←これがでない Set xLobj = Nothing End Sub -----------------excel vbaのコード Option Explicit Dim endRow As Integer, ShipTo As Variant Dim strA As Variant, strB As Variant Sub getStr() endRow = Range("a65536").End(xlUp).Row MsgBox ShipTo ←これがでない Cells(endRow + 2, 1).Select Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",3,0)" strA = ActiveCell.Text Cells(endRow + 2, 2).Select Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",13,0)" strB = ActiveCell.Text End Sub Word vbaからexcel vbaは起動します。Word側、excel側で使う関数はグローバル変数にし、variant型にしてみましたが値がわたりません(Wordでは取得できています)。Application間で値を渡す方法、もしくは根本的にもっとうまい方法があればご教示ください! WinXP、Office2003を使用です。

  • EXCEL 関数かVBAでファイル作成日を取得する方法

    エクセルのプロパティ→詳細情報→作成日時で表示される作成日時を取得する方法を教えてください。 ワークシート関数でもVBAでもどちらでもOKです。 よろしくお願いします。

  • ファイル作成日時と更新日時を一括で前回保存日時に!

    ファイルの作成日時と更新日時を一括で前回保存日時に変更したいです。 MSオフィスのファイルを入れたHDDが壊れ、ある程度はファイル復旧できたのですが、ファイル名が壊れて数字の羅列になってしまいました。また、作成日時と更新日時が復旧した日時になってしまったので、一つひとつ開かないと、いつのファイルかもわからない情況で困っています。 せめて、ファイル作成日と更新日がプロパティ内の前回保存日時にならないかと考えています。 (約3割程度が前回保存日時がのこっていました) 一括変換するための良いツールなどありましたら、無料・有料といませんので教えていただけませんでしょうか。 よろしくお願いいたします。

  • excel2013 vba のコードの記述を印刷

    お世話になります。excel vba のコードの記述を印刷を印刷するフリーソフトでvba2htmlがありますが、 これがexcel2013にインポートできなくて困っています。 ご存知のかたいらっしゃいましたらご教示願います。

  • VBAの覚え方・勉強の仕方

    自分はVBAを覚える・勉強するために テキストファイルにサンプルコードを作って一つのフォルダに保存しています。 サンプルコードとは Sub ファイル名を取得する() MsgBox CurrentProject.Name End Sub をテキストに書いて保存して、ファイル名を 「Access_自身のファイル名を取得する.txt」にしています。 現在200個くらい作りましたが、 管理ができなくなってきてしまいました。 というのも、同じようなサンプルコードを作ってしまったり、 フォルダ内検索してるのに欲しいコードがヒットしなかったりです。 みなさんはどのようにVBAのお勉強をしているのでしょうか? サンプルコードを作られている方は、どのように管理されてますか? アクセスで「サンンプル管理システム」などを作って管理してるのでしょうか?

専門家に質問してみよう