Visual Basic .NET 2003 および Visual Basic .NET 2002 で Dsofile.dll を使用すると Office がなくても Office ドキュメントのプロパティを編集できる

文書翻訳 文書翻訳
文書番号: 224351 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

Dsofile.dll サンプル ファイルは、Microsoft Visual Basic .NET または Microsoft .NET Framework を使用するプログラマのための、インプロセス ActiveX コンポーネントです。この DLL をカスタム アプリケーションで使用すると、次のような Microsoft Office ファイルに対応する OLE ドキュメント プロパティの読み取りや編集ができます。
  • Microsoft Excel ブック
  • Microsoft PowerPoint プレゼンテーション
  • Microsoft Word 文書
  • Microsoft Project プロジェクト
  • Microsoft Visio 図面
  • インストールされた上記の Office 製品を除く他のファイル


Dsofile.dll サンプル ファイルは、Microsoft Visual C++ で記述されています。Dsofile.dll サンプル ファイルには、OLE32 IPropertyStorage インターフェイスを使用して OLE 構造化ストレージ ファイルの拡張プロパティにアクセスする方法が示されています。このコンポーネントにより、プロパティ データは、Visual Basic .NET および .NET Framework で簡単に使用できるように、オートメーションに対応したデータ型に変換されます。Dsofile.dll サンプル ファイルは、完全なソース コードと共に提供され、Visual Basic .NET で記述されたサンプル クライアントが含まれています。

詳細

サンプル ActiveX コンポーネントのダウンロード

下記のファイルは、「Microsoft ダウンロード センター」からダウンロードできます。
元に戻す画像を拡大する
ダウンロード
DsoFileSetup_KB224351_x86.exe パッケージ
Dsofile.dll サンプル ファイル コンポーネントおよび Visual Basic .NET コード ファイルは、ユーザーが利便性があると判断した方法で、使用、変更、再現および配布を無償で行うことができます。ただし、マイクロソフトは、これらの使用およびこれらによって提供される情報に関していかなる保証、義務、責任も負わないものとします。このコンポーネントおよびソース コードは、学習用のみを目的に無償で提供されているサンプルです。このコンポーネント、またはその一部を実運用環境における解決策として使用する場合、コンポーネントの確認、変更、テスト、およびサポートは、自己の責任において行ってください。

警告 : Dsofile.dll および関連するサンプル コードは、いかなる保証もない現状ベースで提供されているものです。マイクロソフトは、市場性および特定の目的への適合性を含め、明示的にも暗示的にも、一切の保証をいたしません。 自己の責任においてご使用ください。

OLE ドキュメント プロパティに関する情報

すべての OLE 複合ドキュメントは、永続的なプロパティ セットに、ドキュメントに関する追加情報を格納できます。これらは、ドキュメント概要プロパティと総称されています。これらのプロパティ セットは、COM または OLE で管理されるため、サードパーティのクライアントは、ファイルを管理するメインのアプリケーションを使用せずに、この情報を読み取ることができます。

ドキュメント プロパティの読み取りに関心のある開発者のために、プロパティ セットの管理用として、次の 2 つのインターフェイスが用意されています。
  • IPropertySetStorage
  • IPropertyStorage
ただし、このインターフェイスはオートメーションと互換性がないため、Visual Basic .NET のプログラマがこれらのインターフェイスを直接使用することはできません。この問題を解決するため、Visual Basic .NET の開発者は、DsoFile サンプルなどの ActiveX DLL を使用して、OLE 複合ドキュメントで使用される最も一般的なプロパティの読み取りおよび書き込みを行うことができます。この方法は、Office で使用されるプロパティにアクセスする場合にも使用できます。

: Dsofile.dll サンプル ファイルは、特に Visual Basic .NET プログラマ用に作成されたものですが、COM 対応の他の言語でも使用できます。

カスタム アプリケーションでの DsoFile コンポーネントの使用

Dsofile.dll サンプル ファイルは、OLE 構造化ストレージ ファイルの標準プロパティおよびカスタム プロパティの両方に対して、読み取りおよび書き込みを行います。OLE 構造化ストレージ ファイルには、たとえば、次のような種類があります。
  • Word 文書
  • Excel ブック
  • PowerPoint プレゼンテーション
Dsofile.dll サンプル ファイルのサイズと処理速度により、ドキュメント プロパティの読み取りは、Office のオートメーションよりも DLL で行う方が効率的になる場合があります。

このコンポーネントを使用するには、DSO OLE Document Properties Reader 2.0 という名前の Dsofile タイプ ライブラリの参照を設定します。このコンポーネントは、実行時の呼び出しおよび事前バインドの呼び出しの両方で使用できます。Dsofile.dll サンプル ファイルには、作成できるオブジェクトが 1 つだけ含まれています。そのオブジェクトは、DSOFile.OleDocumentProperties という名前です。DSOFile.OleDocumentProperties オブジェクトによって、Open メソッドを使用して読み込んだファイルの OLE ドキュメント プロパティにアクセスできます。ファイルを開いたときに、すべてのプロパティが読み取られ、キャッシュされます。次に、すべてのプロパティが、OleDocumentProperties オブジェクトを通じて編集できるようになります。これらのプロパティは、Save を呼び出したときにのみファイルに書き戻されます。ファイルの編集が終了したら、Close を呼び出してファイル ロックを解放します。

標準 OLE プロパティおよび標準 Office 概要プロパティは、SummaryProperties プロパティで取得できます。CustomProperties コレクションには、カスタム プロパティの一覧が含まれています。各カスタム プロパティには一意の名前が付けられています。コレクション内の各カスタム プロパティには、その名前を使用してアクセスできます。個々のプロパティを、追加または削除できます。また、Visual Basic .NET の For Each 構文を使用して、コレクション全体を列挙することもできます。

Open メソッドが呼び出されると、Dsofile という名前の OleDocumentProperties オブジェクトは、読み取りアクセスおよび書き込みアクセスの両方でドキュメントを開こうとします。そのファイルが読み取り専用に設定されているか、読み取りアクセスのみが許可されている NTFS 共有にある場合、呼び出しは失敗します。このとき、次のエラー メッセージが表示される場合があります。
Error 70: アクセス許可は拒否されました。
読み取り専用のアクセスでファイルを開く場合は、Open メソッドの ReadOnly パラメータに True を渡します。また、Dsofile でファイルを編集用に開くことができるかどうか試行する場合は、dsoOptionOpenReadOnlyIfNoWriteAccess フラグを渡すことができます。ただし、ファイルが読み取り専用であるか、別のプロセスによってロックされているために Dsofile がアクセスできない場合は、読み取り専用コピーを開きます。次に、IsReadOnly プロパティを使用して、そのドキュメントが読み取り専用で開かれているかどうかを確認できます。

プロパティが変更されると、プロパティ セットを保存する必要があるかどうかを IsDirty プロパティを使用して確認できます。加えられた変更は、Save が呼び出されるまでファイルに書き込まれません。Save を呼び出さない場合、これらの変更は、Close が呼び出された時点で失われます。

Dsofile は、何らかの問題が発生した場合、標準的なオートメーション エラー メッセージの他に、以下のカスタム エラー メッセージのいずれかを返すことがあります。
Error -2147217151 (&H80041101): You must open a document to perform the action requested.
Error -2147217150 (&H80041102): You must close the current document before opening a new one in the same object.
Error -2147217149 (&H80041103): The document is in use by another program and cannot be opened for read-write access.
Error -2147217148 (&H80041104): The document is not an OLE file, and does not support extended document properties.
Error -2147217147 (&H80041105): The command is not available because document was opened in read-only mode.
Error -2147217146 (&H80041106): The command is available for OLE Structured Storage files only.
Error -2147217145 (&H80041107): The object is not connected to the document (it was removed or the document was closed).
Error -2147217144 (&H80041108): Cannot access property because the set it belongs to does not exist.
Error -2147217143 (&H80041109): The property requested does not exist in the collection.
Error -2147217142 (&H8004110A): An item by that name already exists in the collection.

Unicode のプロパティ セット

OLE プロパティ セットには、Unicode 形式またはコード ページを指定したマルチ バイト文字セット (MBCS) 形式のいずれかで文字列を格納できます。Dsofile は、いずれかの種類のプロパティ セットの読み取りおよび書き込みを行うことができます。何も設定されていないファイルにプロパティを追加する場合など、Dsofile で新しいセットが作成されるときには、デフォルトでは、Dsofile により Unicode が選択されます。Dsofile で MBCS 形式の文字列を使用してセットが作成されるようにする場合は、Open メソッドに dsoOptionUseMBCStringsForNewSets フラグを渡すことができます。

既存のプロパティ セットでは MBCS 形式が使用されている可能性があるため、Dsofile は、保存時に、文字列を同じ形式で格納する必要があります。プロパティ セットのコード ページに対応させることができない文字列を追加しようとすると、その操作は失敗します。したがって、追加する文字列には、ファイルが作成されたシステムのコード ページに存在することがわかっている文字だけが含まれるようにしてください。あるいは、それらのプロパティを編集する前に、すべてのプロパティ セットが Unicode 形式であることを確認してください。

: Dsofile では、MBCS が使用されている既存のプロパティ セットは Unicode には変換されません。この機能を追加する場合は、サンプルを変更する必要があります。

DLL のセットアップおよびテスト手順

自己解凍形式のセットアップ プログラムにより、選択した場所に DsoFile.dll コンポーネントのインストールおよび登録が行われます。このセットアップでは、コンポーネントの使用方法を例示する 2 つの Visual Basic .NET テスト アプリケーションとそのすべてのソース コードもインストールされます。

DLL を別の場所または別のコンピュータに移動する場合は、再度使用する前に、DLL を再登録する必要があります。この操作を行うには、[スタート] メニューの [ファイルを指定して実行] ダイアログ ボックスで、regsvr32 [filepath]\dsofile.dll と入力します。

サンプルを実行するには、次の手順を実行します。

Visual Basic 6.0 の場合

  1. 以下の名前の Visual Basic 6.0 サンプル プロジェクトを開きます。

    .\Source\Vb6Demo\PropDemo.vbp
  2. Dsofile.dll が正しく参照されていることを確認します。これを行うには、[プロジェクト] メニューの [参照設定] をクリックします。[DSO OLE Document Properties Reader 2.0] の参照が設定されているかどうかを確認します。
  3. F5 キーを押してプロジェクトを実行します。
  4. 複合ドキュメント ファイルを開くように要求するメッセージが表示されたら、適切なファイルを選択し、そのドキュメント プロパティが表示されることを確認します。

Visual Basic .NET 7.0 または Visual Basic .NET 7.1 の場合

  1. 以下の名前の Visual Basic 7.0 プロジェクトを開きます。

    .\Source\Vb7Demo\FilePropDemoVB7.sln

    このプロジェクトは、Visual Studio .NET 2002 の Visual Basic 7.0 または Visual Studio .NET 2003 の Visual Basic 7.1 のいずれかで開くことができます。
  2. ソリューションを 7.0 形式から 7.1 形式に自動的に変換するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。
  3. F5 キーを押して、Visual Basic プロジェクトをコンパイルして実行します。
  4. フォームが表示されたら、[Open] をクリックします。
  5. 適切な Office ファイルを選択し、[開く] をクリックします。

    Office ファイルのドキュメント プロパティが、ダイアログ ボックスに表示されます。そのドキュメント プロパティを編集できます。

関連情報

Visual C++ でドキュメント プロパティを読み取る方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
186898 [HOWTO] VC++ を使用して複合ドキュメントのプロパティを直接読み取る方法

プロパティ

文書番号: 224351 - 最終更新日: 2007年5月21日 - リビジョン: 8.2
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Office Excel 2003
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2003
  • Microsoft Office Visio Professional 2003
  • Microsoft Office Project Professional 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002
  • Microsoft Visio Professional Version 2002
  • Microsoft Project Standard Version 2002
キーワード:?
kbdownload kbautomation kbfile kbinfo kbpersistst KB224351
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com