Script事業案内エクセル以外ホームマクロVBAマクロVBA技術解説ドキュメントプロパティ(BuiltinDocumentProperties,CustomDocumentProperties)最終更新日:2019-01-19ドキュメントプロパティ(BuiltinDocumentProperties,CustomDocumentProperties)ブックのドキュメントプロパティには、組み込みドキュメントプロパティとユーザー設定のドキュメントプロパティがあります。CustomDocumentPropertiesこれらは、DocumentPropertyオブジェクトのコレクションになります。組み込みドキュメントプロパティファイルの右クリックから「プロパティ」の「詳細」タブで見られる内容になります。このプロパティの値をVBAで取得・設定します。これに関連して、ブック保存時に次のメッセージがでる場合があります。ワークシートこのような操作で作成したブックの場合に出ます。オプションこの中の、ドキュメント固有の設定のところにチェックが付いている場合にメッセージが出ます。チェックを外せばメッセージは出なくなります。Excelを起動して新規ブックを作成したときは、このメッセージは出ません。ドキュメント固有の設定が最初からチェックされずに作成されます。この手順で新規作成している人のほうが多いのではないかと思います。組み込みドキュメントプロパティを一覧出力BuiltinDocumentPropertiesコレクションから、DocumentPropertyオブジェクトを取得し、オブジエクトのプロパティから名称や値を取得するマクロVBAです。Subマクロの書かれているブック(ThisWorkbook)のアクティブシートに、アクティブブック(ActiveWorkbook)の組み込みドキュメントプロパティを出力しています。ThisWorkbookのActiveSheetの全体をClearしているので、使うときは注意してください。TypeプロパティについてmsoDocProperties列挙になります。以下の方法で、ファイルを開かずにプロパティを取得することができます。Integer'ファイルのフルパスを指定します。上記VBAコードでは、あえてThisworkBookを取得しています。取得できていることは確認できますが、取得できない項目も結構あるようです。time」が取得でないようで、これは困ります。この情報がないのでは、ファイル管理になりません。なると、別途に、VBA関数のFileDateTimeを使うか、FileDateTime関数は、指定したファイルの作成日時または最後に修正した日時を返します、バリアント型(内部処理形式DateのVariant)の値を返します。FileSystemObjectを使い、FolderオブジェクトのDateLastModifiedプロパティを取得する必要が出てきます。FileSystemObjectオブジェクトでは、コンピュータのファイルシステムへのアクセスが提供されています。VBAに用意されているファイル操作関連のステートメントや関数より、より強力で、より多くの機能が搭載されています。機能が大変多いため、これらを全て覚えるという事は困難です。面倒な気もしますが、ファイル数が多い時には高速で動作するので使い方によっては便利だと思います。組み込みドキュメントプロパティの値を変更するExcelブックを幅広く配布する場合、ブック内に個人情報が残っていると、ちょっと不安ですよね。組み込みドキュメントプロパティ内の公開したくない情報を消去するマクロVBAです。MsgBox("ファイルが存在します。_"上書きしてもよろしいですか。"個人情報を削除したファイルを作成しました。SubThisWorkbookの最後に_copyを付けて、同一フォルダに保存しています。Application.UserName保存時に、Application.UserNameが前回保存者に設定されます。これはブランクにできないので、最低でも半角スペースを入れる等の値の設定が必要です。文書バージョン設定しても無視されるプロパティ以下のプロパティは、設定しても無視または別途値が設定されてしまいます。実際には私は使ったことはありませんね。組み込みを紹介したので、ユーザー設定も紹介しておこうという趣旨です。この機能を使うとしたら、ファイルを開かずに、このプロパティを取得してファイルを管理するような場合でしょうか。膨大なファイル数を管理する場合に、その概要だけを取得したいような場合になると思います。それには、Microsoftが作成し無償で公開しているDsofile.dllをインストールする必要があります。これについて知りたい場合は、「Dsofile.dll」で検索してください。」getBuiltinDocumentPropertiesこのVBA内の、BuiltinDocumentProperties↓に変更CustomDocumentPropertiesこれで一覧が出力できます。Addメソッドを使います。プロパティの名前を指定します。プロパティをセルの内容にリンクする場合にTrueを指定します。Trueを指定した場合は、引数LinkSourceを必ず指定します。Falseを指定した場合は、引数Valueを必ず指定します。プロパティのデータ型を指定します。使用できる定数は、MsoDocProperties列挙です。プロパティがコンテナードキュメントの内容にリンクしていない場合の値を指定します。値は引数Typeで指定したデータの種類に応じて変換されます。データ型によって変換できない場合は、エラーになります。LinkToContentがTrueの場合、この引数は無視され、リンクしたプロパティの値がコンテナーアプリケーションによって更新されるまで、新しいドキュメントプロパティには既定値が設定されます。LinkToContentがFalseの場合、この引数は無視されます。セルの値をリンクする場合は、セルに名前の定義をしておき、定義した名前を文字列で指定します。以下は、保存時に保存日時を履歴として、ユーザー設定のドキュメントプロパティに追加するマクロVBAです。ブックのWorkbook_BeforeSaveイベントで起動させています。Sub上記マクロVBAでは際限なく増えてしまいますので、頻繁に保存する場合は何らかの工夫が必要になります。参考としてのマクロVBAなので、実務で使う場合はそれなりの仕組みを作る必要があります。保存日時を履歴として追加したプロパティを削除するマクロVBAになります。記事を書いてみて改めてドキュメントプロパティを活用するのは結構面倒かなという感じもしました。ファイルを開くのなら、シートのセルに記載したほうが良いですし、ファイルを開かずに情報を得るのは、ExecuteExcel4Macroを使っても可能です。ExecuteExcel4Macroについて(Excel4.0マクロ)ExecuteExcel4Macroは、Excel4.0のマクロを実行します。昔のマクロを使うということです。VBAが使える前にあったものですが、最新バージョンのエクセルでも使用できます。いえ、積極的に使うようなものでもないですし、MSもVBAへの移行を勧めています。ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)「ブックを開かずにセル値を取得」に関する検索が非常に多いようです。ExecuteExcel4Macroに関連しているとか、もしくは、大量のファイルがある為、VBAの処理時間がかかってしまうと言うものでしょう。ExecuteExcel4Macroについての簡単な解説は、「ExecuteExcel4Macroについて」サンプルを通して、Excelファイルを開かずにシート名を取得Excelファイルを開くときは、ファイルサイズに比して、とても遅い場合があります、ファイルを開かずに、Excelの情報を取得したいという要望は少なからずあるようです、そこで、処理の基本となるシート名を取得する方法になります。開かないと言っても、厳密には必ず開いているわけですが、Excelのブックとして開かないという事です。Excelファイルを開かずにシート名をチェック多くのExcelファイルから、特定のシート名のデータを取得する場合、当該シートが存在してないブックがあるならば、ブックを開く前にシートの存在をチェックしたくなります。このような、ファイルを開かずにExcelの情報を取得したいという要望は多くあります。多数のファイルを管理する場合の一手段としては検討する価値はあるのではないでしょうか。実現したい機能を良く考えて、ドキュメントプロパティを使うことを検討してみても良いと思います。Next)|VBA入門8.セルに文字を入れるとは(Range,Value)|VBA入門9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説10.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技ホームマクロVBAマクロVBA技術解説ドキュメントプロパティ(BuiltinDocumentProperties,CustomDocumentProperties)このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用ホームマクロVBAマクロVBA技術解説ドキュメントプロパティこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。