エクセルの「ユーザー設定のドキュメントプロパティ」を取得するには、Microsoftが作成し無償で公開しているDsofile.dllをインストールすれば可能との事なので、以下のページからダウンロードして、インストールしました。
Microsoft Developer Support OLE File Property Reader 2.1 Sample (KB 224351)
http://www.microsoft.com/downloads/en/details.as …
<現象>
参照設定「DSO OLE Document Properties Reader 2.1」の後、
次のを実行したのですが「実行エラー438」が発生!?
Sub Test01()
Dim DSO As Object
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open "D:\Test1\Book01.xls"
MsgBox DSO.BuiltinDocumentProperties("Author") '←実行エラー
DSO.Close
Set DSO = Nothing
End Sub
<質問>
OS:WinVista(Excel2007-VBA)でDSOFile.dllは使えますか?
ご教授よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
言っておくけど、Q6708610とDSO.dllで使っているオブジェクトは異なる物、だからね。
実際そのサンプルに含まれるコード(多分読んでないんだろうなあ)にはBuiltinDocumentPropertiesなどというものは一切使われていない。
参考にした
http://technet.microsoft.com/ja-jp/scriptcenter/ …
も同様だ。まったくそんなものはない!
#一応MS Officeがない環境を考え、Windows XP + VBScriptで検証した。
(マシンがないからそのような環境を作ってテスト、はしてない。なのでVista+MS Office 2007の状況は知らない)
'================================
Dim DSO ' VBScriptから As Objectとか型指定はできないみたい。
' ちなみに、VB6やVBAで参照設定するなら、型名としてちゃんと使えるから、
'遅延バインディングとか要らないと思うよ(VBSは参照設定無理だし型指定もできないけど)
Set DSO = WScript.CreateObject("DSOFile.OleDocumentProperties")
'どうも、Excel等が既にこのファイルを読んでいるときに、開こうとするとファイル名等が正しくても、「パスまたはファイル名が無効」みたいなことを言われる。正当な理由があるならエラーになるのは別に構わないんだけど、エラーメッセージくらい正しく出して欲しいものだ。
DSO.Open "D:\Book1.xls"
'今回はValueとか付けないみたいです。付けたら怒られたので。厳密に調べたかったら、VB6やVBAのオブジェクトブラウザでも使いましょう。
'何か「ドキュメントがない」んですよね。ひどい事に。
MsgBox DSO.SummaryProperties.Author
DSO.Close
Set DSO = Nothing
'==============================
とか実行したら、xlsファイルの作成者名として、xlsを作成したマシンのユーザー名であるOwnerが表示された。
himajin100000さんお世話になっております。
Dsofile 語られざる物語
http://technet.microsoft.com/ja-jp/scriptcenter/ …
を拝見しました(読ませていただきました)…納得。
露骨にファイルを開かないでプロパティ情報値を取得(設定)できる事を理解しました。
お陰様で私の望んでいた事が全て叶いました。
本当にお世話になりました。
<参考>
試行結果:下記は何れも動作しました。
WinXP (Excel2003.xls-VBA) Dsofile.dllを参照設定
WinVista(Excel2007.xls-VBA) Dsofile.dllを参照設定
Sub Dsofile値表示()
Dim wTarget As String
wTarget = Application.GetOpenFilename("Excel Files(*.xls*), *.xls*")
If wTarget = "False" Then Exit Sub
Dim objFile As Object
Set objFile = CreateObject("DsoFile.OleDocumentProperties")
objFile.Open (wTarget)
MsgBox "Author: " & objFile.SummaryProperties.Author '←作者
Set objFile = Nothing
End Sub
No.1
- 回答日時:
DSOFile.dll は、Excel を使わずに「ユーザー設定のドキュメントプロパティ」を取得するためのものです。
それを Excel から使うというのはどういうことでしょう。
Excel からなら、そんなもの必要ありません。
この回答への補足
目的は、当該Excelから他のExcelファイルの「ユーザー設定のドキュメントプロパティ」を取得又は設定したい。且つ、他のExcelファイルを開かないでこれを行いたい。
私のパソコン環境にはVB等の開発環境を用意していません。依ってExcel-VBAによる便利ツールを作成し作業の効率化を試みています。
そこで、掲題の「DSOFile.dll」を適用すれば画期的な威力を発揮してくれるのではと期待しているわけです。的外れでしょうか!?。。。
何れにしろ「実行エラー」が解消できれば幸いです。
ご教授宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) バックグラウンドのプロセスのエクセルを閉じる方法 4 2022/05/12 15:39
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
プライマリ相互運用機能アセン...
-
VB.NETでDLLを読み込ませる時に...
-
VB.NETで参照設定したDLLの修正...
-
C#ソースをCSCファイルにてコン...
-
VB2010で作成したソフトのexeフ...
-
VB2008→VB2010でエラーが出てま...
-
ManagementClassが見つからない。
-
オブジェクト(dll)のレジストリ...
-
ACCESSで参照設定が参照不可に...
-
SOAP通信。恥を忍んで質問させ...
-
VB.Net リビルド 意味不明なメ...
-
VB2010で作成したdllからtlbが...
-
Using System.Drawing がうまく...
-
IT初心者です 仕事で、vb.netで...
-
Excel-VBAでDSOFile.dll使える?
-
ExcelでVBAで自動参照設定
-
EXCEL2000でVBAでWinsockをしたい
-
vba 時間の引き算 例えば 15:00...
-
Designer.vbは直接コードをいじ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
chatgpt 4oを使っています。あ...
-
VB.Net リビルド 意味不明なメ...
-
VB.NETで参照設定したDLLの修正...
-
オブジェクト(dll)のレジストリ...
-
IT初心者です 仕事で、vb.netで...
-
ビルドが実行できない 先へ進...
-
C#ソースをCSCファイルにてコン...
-
VB.NETでDLLを読み込ませる時に...
-
msvcr120d.dllがないというエラー
-
VB2010で作成したdllからtlbが...
-
VB2008→VB2010でエラーが出てま...
-
SOAP通信。恥を忍んで質問させ...
-
Using System.Drawing がうまく...
-
DLLを作成してVBAから使用する...
-
ExcelでVBAで自動参照設定
-
MS Visual Studio 6.0のEnterpr...
-
VBAからDLLをCALLしたいのですが
-
Windows10のVBAでDirectX 8が使...
おすすめ情報