tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVB6参照設定
記事No15376
投稿日: 2011/12/03(Sat) 17:20
投稿者あいあい
VB6の参照設定について教えてください。
VB6からEXCEL2003のワークシートメニューバーの制御をするため、
次のようなコードを書きました。

  Dim objXlsApp                       As Excel.Application
  Dim objXlsBook                      As Excel.Workbook

 Set objXlsApp = New Excel.Application
 Set objXlsBook = objXlsApp.Workbooks.Open(C:\Documents and Settings\AA\_
                                                        デスクトップ\BB.xls)

    objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True

これをコンパイルしてEXEを作成し、実行したところ正常に動作するPCもあるのですが、
特定のPCにて「objXlsApp.CommandBars・・・」でエラーが発生し、
エラーナンバーはErr.Number=-2147319779でした。

EXCEL2003のCommandBarsプロパティを操作するためのライブラリは
「Microsoft Office 11.0 Object Library」のようなのですが、
VB6の参照設定では、「Microsoft Office 11.0 Object Library」にチェックは
入れていません。

以前から「Microsoft Office 11.0 Object Library」の参照設定はせずに
「objXlsApp.CommandBars・・・」コマンドも動作していたのですが、
私がこのソフトを担当して別の部分を修正したら、「objXlsApp.CommandBars・・・」
で特定PCにてエラーがでるようになってしまったのです。

ちなみに正常に動作するPCにもエラーが起こるPCも
XPでMicrosoft Office 11.0 Object Library である
C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL
は存在します。

・特定PCにてエラーが起こる原因としてどのようなことが考えられるでしょうか。
・また、Microsoft Office 11.0 Object Libraryの参照は必要でしょうか。
・「Microsoft Office 11.0 Object Library」を参照していなくても
 動作するPCがあるのはなぜでしょうか。

長くなりましたが、どなたか助けてください。
どうぞよろしくお願いいたします。

[ツリー表示へ]
タイトルRe: VB6参照設定
記事No15377
投稿日: 2011/12/04(Sun) 12:08
投稿者花ちゃん
>   Dim objXlsApp                       As Excel.Application
>   Dim objXlsBook                      As Excel.Workbook
>
>  Set objXlsApp = New Excel.Application
>  Set objXlsBook = objXlsApp.Workbooks.Open(C:\Documents and Settings\AA\_
>                                                         デスクトップ\BB.xls)

コードを投稿される場合は実際に使っているコードをコピペして投稿して下さい。
実際に使っているコードと違うコードを投稿されると正しい回答ができません。
又、詳しい開発環境や実行環境・使用しているExcelのバージョンも含めて書くように
して下さい。

>
>     objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
>
> これをコンパイルしてEXEを作成し、実行したところ正常に動作するPCもあるのですが、
> 特定のPCにて「objXlsApp.CommandBars・・・」でエラーが発生し、
> エラーナンバーはErr.Number=-2147319779でした。
>
> EXCEL2003のCommandBarsプロパティを操作するためのライブラリは
> 「Microsoft Office 11.0 Object Library」のようなのですが、
> VB6の参照設定では、「Microsoft Office 11.0 Object Library」にチェックは
> 入れていません。

では、開発環境での参照設定はどのように設定されているのでしょうか?
参照設定をしていなければ、上記のような事前バインディングのコードでは、
コンパイルエラーが発生するかと思うのですが。

EXCEL2003 の機能を使いたいのであれば、実行環境にもEXCEL2003 がインストール
されている必要があります。

事前バインディングのコードで開発されたのなら実行環境も同じ環境でないと
正しく動作しません。

実行時バインディングなら、開発環境での参照設定は必要ありませんが、Excel の
バージョン 間で互換性の無いコードは使用できませんし、定数等自前で設定する必要が
ありますので注意して下さい。

詳しくは、ここの Excel & Word 関係をご覧ください。
 http://www.hanatyan.sakura.ne.jp/vbhlp/excelframe.htm

[ツリー表示へ]
タイトルRe^2: VB6参照設定
記事No15378
投稿日: 2011/12/04(Sun) 15:30
投稿者あいあい
> コードを投稿される場合は実際に使っているコードをコピペして投稿して下さい。
> 実際に使っているコードと違うコードを投稿されると正しい回答ができません。

すみません。以下にコピペします。

    Dim objXlsApp                       As Excel.Application    
    Dim objXlsBook                      As Excel.Workbook
  Dim strFileName                     As String    

    strFileName = gSaveExcelPath & "\" & "DiagramExcel.xls"

  Set objXlsApp = New Excel.Application
    Set objXlsBook = objXlsApp.Workbooks.Open(strFileName)

  objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True

> 又、詳しい開発環境や実行環境・使用しているExcelのバージョンも含めて書くように
> して下さい。

開発環境:WindowsXP Home Edition Ver2002 SP3
          Microsoft OFFICE 2003 SP3
実行環境:WindowsXP Professional
     Microsoft OFFICE 2003 SP3

> では、開発環境での参照設定はどのように設定されているのでしょうか?
> 参照設定をしていなければ、上記のような事前バインディングのコードでは、
> コンパイルエラーが発生するかと思うのですが。

開発環境での参照設定は
[プロジェクト]-[参照設定]にて
 Visual Basic For Applications にチェックあり
  Visual Basic runtime objects and procedures にチェックあり
 Visual Basic objects and procedures にチェックあり
  OLE Automation にチェックあり
  Microsoft Data Formatting Object Library 6.0(SP4) にチェックあり
  Microsoft Excel 11.0 Object Library にチェックあり
 Microsoft Office 11.0 Object Library にチェックなし
                     ~~~~~~~~~~~~
また、Microsoft Office 11.0 Object Library を参照していなくても
コンパイルエラーは起きていません。

>
> EXCEL2003 の機能を使いたいのであれば、実行環境にもEXCEL2003 がインストール
> されている必要があります。
>
> 事前バインディングのコードで開発されたのなら実行環境も同じ環境でないと
> 正しく動作しません。

開発環境と実行環境は、XPのエディションに違いがありますが、
XPでOFFICE2003(SP3)という点では同じだと考えています。

ただ、開発環境には 2007 Office System 互換機能パックがインストールされています。

よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: VB6参照設定
記事No15379
投稿日: 2011/12/04(Sun) 16:32
投稿者花ちゃん
>   Microsoft Excel 11.0 Object Library にチェックあり
> 開発環境と実行環境は、XPのエディションに違いがありますが、
> XPでOFFICE2003(SP3)という点では同じだと考えています。

であれば問題ないように思いますが、エラー発生場所はどのようにして確認されたのでしょうか?
又、Excel はどの時点で表示しているのでしょうか?
(CommandBars の前に表示させても同じでしょうか?)
実行環境にもVB6.0 が入っているのなら、IDE 上ではどうなのでしょうか?

又、開発環境で新規に、CommandBars("Worksheet Menu Bar").Enabled だけを動作させる
だけの EXE を作って試して見ても同様にエラーがでますか?
( Microsoft Data Formatting Object Library の参照設定はせずに)

それでも同じなら、実行時バインディングのコードで試したらどうなりますか?

VB6.0 のサービスパックは、SP6 でないようですが今回の件とは関係ないようですが
最新のサービスパックを当てておいてください。

[ツリー表示へ]
タイトルRe^4: VB6参照設定
記事No15380
投稿日: 2011/12/04(Sun) 20:42
投稿者あいあい
> であれば問題ないように思いますが、エラー発生場所はどのようにして確認されたのでしょうか?
> 又、Excel はどの時点で表示しているのでしょうか?
> (CommandBars の前に表示させても同じでしょうか?)
> 実行環境にもVB6.0 が入っているのなら、IDE 上ではどうなのでしょうか?

エラーが起こるPCはユーザーさんのPCでVB6は入っていません。
またユーザーさんのPCでしか再現しない現象なので、試行錯誤がやりにくい状態です。

エラー場所の特定、EXCELの表示に関してですが、
下記のように一つの処理が完了するごとにメッセージをログに出すようにして
特定しました。(gfuncAnalysisLog:ログファイルにメッセージ表示する関数)

 objXlsGraphSheet.Activate
 Call gfuncAnalysisLog("Command3")  'ログ出力3

 objXlsGraphSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=False
 Call gfuncAnalysisLog("Command4") 'ログ出力4

  objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
  Call gfuncAnalysisLog("Command5") 'ログ出力5

   (中略)

   objXlsApp.Visible = True 'エクセルファイル可視

さらにErrオブジェクトのNumberプロパティをログに表示させています。
エラーが起こるPCにて得たログファイルは

002 2011/12/01 08:10:56    Command1-OK
003 2011/12/01 08:10:56    Command2-OK
004 2011/12/01 08:10:56    Command3-OK
005 2011/12/01 08:10:56    Command4-OK
006 2011/12/01 08:10:56    gfncGraphSave-'~' メソッドは失敗しました: '~' オブジェクトErr.Number=-2147319779

Command5である
objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
でエラーとなったと判断しました。

> 又、開発環境で新規に、CommandBars("Worksheet Menu Bar").Enabled だけを動作させる
> だけの EXE を作って試して見ても同様にエラーがでますか?
> ( Microsoft Data Formatting Object Library の参照設定はせずに)
>
> それでも同じなら、実行時バインディングのコードで試したらどうなりますか?

ユーザー環境のみで起こる現象なので、試行錯誤がやりにくいですが
・CommandBars の前にEXCEL表示させる。
・CommandBars("Worksheet Menu Bar").Enabled だけのEXE
・実行バインディングコード
を試してみます。

が、これ以外にもVB->EXCELを操作する部分で
開発環境での動作とユーザー環境での動作が異なることがあるので
参照設定の問題ではないかと疑っています。

何度も同じ質問をして申し訳ないのですが、
「Microsoft Office 11.0 Object Library」を参照していなくても
問題ないでしょうか。

よろしくお願いします。

[ツリー表示へ]
タイトルRe^5: VB6参照設定(修正)
記事No15381
投稿日: 2011/12/04(Sun) 22:27
投稿者花ちゃん
> 「Microsoft Office 11.0 Object Library」を参照していなくても
> 問題ないでしょうか。

その辺の機能に依存するコードを使っていないのならExcel の参照設定だけで問題ないかと
思います。
その辺を確認する意味でもエラーの発生した部分のコードのみで確認して原因を特定する
必要があるかと思い前回のような提案をしたのです。
(本当にその部分が原因でエラーが発生しているのか切り分ける為にも。違う部分でエラーが
発生しているような気がしたものですから)

開発環境で問題が無く、実行環境でエラーが発生するなら、環境の違いをひとつひとつ
調べて潰して行くのが一番の早道かと思いますよ。
例えば、エラーが発生している部分のコードをコメントにしたらエラーがでなくなったとか、
違うExcel ファイルで試したらエラーがで無くなったとか、Excelを表示してから
問題の部分を実行したら、直ったとか。
(投稿されたコードと実際に使っているコードが違うようなのでその辺の確認をする意味でも
objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True の部分を実行するだけの
コードで試してほしかったので)

Command5 内でエラーが発生しているのなら、勝手にエラーの個所を推測しないで、Command5 内の全てのコードを投稿して頂かないと...。
Data Formatting Object Library に起因していると言う事はありませんか?

下記を実行して同じエラーがでるのかどうかを試して見て下さい。
(Excel の参照設定をしてください。)

Option Explicit

Private Sub Command1_Click()
   Dim xlApp   As Excel.Application
   Dim xlBook  As Excel.Workbook
   Dim xlSheet As Excel.Worksheet
  
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add
   Set xlSheet = xlBook.Worksheets(1)
   xlApp.Visible = True
   xlApp.CommandBars("Worksheet Menu Bar").Enabled = True
   Set xlSheet = Nothing
   xlBook.Close
   Set xlBook = Nothing
   xlApp.Quit
   Set xlApp = Nothing
End Sub



又は、参照設定せずに下記ではどうなるのか

Option Explicit

Private Sub Command1_Click()
   Dim xlApp   As Object
   Dim xlBook  As Object
  
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add
   xlApp.Visible = True
   xlApp.CommandBars(1).Enabled = True
   xlBook.Close
   Set xlBook = Nothing
   xlApp.Quit
   Set xlApp = Nothing
End Sub

[ツリー表示へ]
タイトルRe^6: VB6参照設定(修正)
記事No15388
投稿日: 2011/12/06(Tue) 23:31
投稿者あいあい
花ちゃん様、コードまで記述していただきありがとうございます。

> 下記を実行して同じエラーがでるのかどうかを試して見て下さい。
> (Excel の参照設定をしてください。)
>
> Option Explicit
>
> Private Sub Command1_Click()
>    Dim xlApp   As Excel.Application
>    Dim xlBook  As Excel.Workbook
>    Dim xlSheet As Excel.Worksheet
>    
>    Set xlApp = CreateObject("Excel.Application")
>    Set xlBook = xlApp.Workbooks.Add
>    Set xlSheet = xlBook.Worksheets(1)
>    xlApp.Visible = True
>    xlApp.CommandBars("Worksheet Menu Bar").Enabled = True
>    Set xlSheet = Nothing
>    xlBook.Close
>    Set xlBook = Nothing
>    xlApp.Quit
>    Set xlApp = Nothing
> End Sub
>

上記コードを実行した場合、EXCELウィンドウは表示されますが
その後エラーとなり

「実行時エラー '-2147221163 (80040155)':
'~' メソッドは失敗しました: '~' オブジェクト

というメッセージが出ました。

>
> 又は、参照設定せずに下記ではどうなるのか
>
> Option Explicit
>
> Private Sub Command1_Click()
>    Dim xlApp   As Object
>    Dim xlBook  As Object
>    
>    Set xlApp = CreateObject("Excel.Application")
>    Set xlBook = xlApp.Workbooks.Add
>    xlApp.Visible = True
>    xlApp.CommandBars(1).Enabled = True
>    xlBook.Close
>    Set xlBook = Nothing
>    xlApp.Quit
>    Set xlApp = Nothing
> End Sub

こちらはエラーなく実行できました。
実行時バインディングだとうまくいくのですね。
ありがとうございます。

> Data Formatting Object Library に起因していると言う事はありませんか?

Data Formatting Object Library はどういうときに必要なのでしょうか。
参照設定しているものの、わかっておらず…。

よろしくお願いします。

[ツリー表示へ]
タイトルRe^7: VB6参照設定(修正)
記事No15392
投稿日: 2011/12/07(Wed) 12:55
投稿者花ちゃん
> 実行時バインディングだとうまくいくのですね。

事前バインディングだとエラーとなり実行時バインディングだとうまくいくのなら
Excel のバージョンが開発環境と実行環境で違うのが一般的なのですが、同じバージョン
なら、そのEXEをコピペで実行環境に移して実行していませんか?
(インストーラを使ってインストールしたらどうなのかとか)

又は、実行環境に複数のExcelのバージョンが混在しているとか
インストール先のフォルダー等にパスが通っていないとか環境の違いを調べる必要が
あるように思います。
詳しい状況が解らないのでこれ以上は私には解りません。

> Data Formatting Object Library はどういうときに必要なのでしょうか。
> 参照設定しているものの、わかっておらず…。

StdDataFormat オブジェクト等を使用するときに必要なようです。

[ツリー表示へ]
タイトルRe^7: VB6参照設定(修正)
記事No15393
投稿日: 2011/12/07(Wed) 13:29
投稿者魔界の仮面弁士
> >    xlApp.CommandBars("Worksheet Menu Bar").Enabled = True
例の Microsoft Office X.X Object Library を追加したうえで、
   'objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
  
   Dim bars As Office.CommandBars
   Set bars = xlApp.CommandBars
  
   Dim bar As Office.CommandBar
   Set bar = bars("Worksheet Menu Bar")
  
   bar.Enabled = True
に変更した場合、どの段階でエラーになりますか?


> 「Microsoft Office 11.0 Object Library」を参照していなくても
・CommandBar オブジェクト
・FileSearch オブジェクト
・Assistant オブジェクト
を使う場合は、MSO.DLL を参照していた方が良いとは思います。


また、開発環境または実行環境に複数バージョンの Office が導入されている場合や、
実行環境と開発環境の Office バージョンが異なる場合においては、
 objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
の表記を避けた方が無難そうです。

混在環境で実行する場合は、バージョン間の問題が発生しそうな箇所に限って
レイトバインディングで処理させるか、もしくは上記のように
個別のバージョン固有型に変換させた上で利用することで改善できる場合があります。


といっても、今回の事象が混在環境によるものかどうかは分かりませんし、
MSO.DLL のバージョン別の差異を調べたことも無いので、その有効性については
確証が持てませんが。


> > Data Formatting Object Library に起因していると言う事はありませんか?
> Data Formatting Object Library はどういうときに必要なのでしょうか。
VB6 のデータバインド機能を使っているときの書式設定に使われるライブラリです。
これが必要になることは稀だと思いますが、それを必要としているかどうかは
個々のプロジェクトを見てみないことには分かりません。

[ツリー表示へ]
タイトルRe^8: VB6参照設定(修正)
記事No15394
投稿日: 2011/12/10(Sat) 12:40
投稿者あいあい
花ちゃん様、魔界の仮面弁士様ありがとうございます。

> > >    xlApp.CommandBars("Worksheet Menu Bar").Enabled = True
> 例の Microsoft Office X.X Object Library を追加したうえで、
>    'objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
>    
>    Dim bars As Office.CommandBars
>    Set bars = xlApp.CommandBars
>    
>    Dim bar As Office.CommandBar
>    Set bar = bars("Worksheet Menu Bar")
>    
>    bar.Enabled = True
> に変更した場合、どの段階でエラーになりますか?

Set bars = xlApp.CommandBars で

「実行時エラー '-2147221163 (80040155)':
'~' メソッドは失敗しました: '~' オブジェクト

となります。
Microsoft Office 11.0 Object Libraryの参照設定の優先順位を変えてみましたが
すべてダメでした。

> > 「Microsoft Office 11.0 Object Library」を参照していなくても
> ・CommandBar オブジェクト
> ・FileSearch オブジェクト
> ・Assistant オブジェクト
> を使う場合は、MSO.DLL を参照していた方が良いとは思います。

了解しました。

> また、開発環境または実行環境に複数バージョンの Office が導入されている場合や、
> 実行環境と開発環境の Office バージョンが異なる場合においては、
>  objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
> の表記を避けた方が無難そうです。
>
> 混在環境で実行する場合は、バージョン間の問題が発生しそうな箇所に限って
> レイトバインディングで処理させるか、もしくは上記のように
> 個別のバージョン固有型に変換させた上で利用することで改善できる場合があります。


実行環境もOffice2003(SP3)ですが、
2007の互換機能パックや
Office2010上 でファイルの種類で2003を選択して保存したファイルを読み込んだときにできたと思われるDLLが存在しています。


> 実行環境と開発環境の Office バージョンが異なる場合においては、
>  objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
> の表記を避けた方が無難そうです。

実行環境と開発環境を厳密に同じにすることはとても難しいので
objXlsApp.CommandBars("Worksheet Menu Bar").Enabled = True
は使用しないことにします。

[ツリー表示へ]
タイトルRe^9: VB6参照設定(修正)
記事No15395
投稿日: 2011/12/10(Sat) 13:37
投稿者魔界の仮面弁士
> Set bars = xlApp.CommandBars で
> 「実行時エラー '-2147221163 (80040155)':
> '~' メソッドは失敗しました: '~' オブジェクト

とすると、「CommandBars プロパティの読み取りが失敗している」か
「CommandBars 型への型変換が失敗している」のいずれかのようです。

Dim objCmd As Object
Set objCmd = xlApp.CommandBars  'A
Set bars = objCmd               'B

にした場合、失敗するのは A の行と B の行のいずれでしょうか。

B だとすると、別のクラスまたはインターフェイスで受ける必要がありそうです。
(もしくは、Object 型のまま、以降の処理を続けるか)
失敗する環境のタイプライブラリの内容が分からないので、具体的に
どのような型にすれば良いのかは分かりませんけれども。

一方、A の側でエラーになるとすると、CommandBars のディスパッチID が
変更されている端末があるのかもしれません。その場合には、
 Set obj = CallByName(xlApp, "CommandBars", vbGet)
のようにするか、もしくは
 Dim objApp As Object
 Set objApp = xlApp
 Set objCmd = objApp.CommandBars
のように、プロパティ名で名前解決させれば動作するかも…?

[ツリー表示へ]
タイトルRe^10: VB6参照設定(修正)
記事No15396
投稿日: 2011/12/10(Sat) 15:04
投稿者あいあい
> Dim objCmd As Object
> Set objCmd = xlApp.CommandBars  'A
> Set bars = objCmd               'B
> にした場合、失敗するのは A の行と B の行のいずれでしょうか。

Aでエラーとなり
エラーメッセージは同じです。

Aを指示の通り差し替えて

   Dim bars As Office.CommandBars
   'Set bars = xlApp.CommandBars
  
   Dim objCmd As Object
   'Set objCmd = xlApp.CommandBars  'A
  
   Dim objApp As Object
   Set objApp = xlApp
   Set objCmd = objApp.CommandBars
  
   Set bars = objCmd               'B

としたところ、Bにて
実行時エラー'13':
型が一致しません。
となります。

[ツリー表示へ]
タイトルRe^11: VB6参照設定(修正)
記事No15401
投稿日: 2011/12/14(Wed) 06:53
投稿者魔界の仮面弁士
現象自体は No15388 の時点で回避策が見つかっているようなので、
現在は原因究明の段階ということですね。


エラーになってしまう環境と、正常動作する環境の違いを調べるために、
OLE/COM Object Viewer (oleview.exe) を使ってみては如何でしょうか。

これは、Windows 2000 Resource Kit Tool や Visual Studio 6.0 などに
付属していますし、単体でダウンロードすることができます。
(インストール等は不要で、EXE と DLL が同じフォルダにあれば動きます)

ツールを起動し、[File]-[View TypeLib...]で、参照設定対象のDLLを指定することで
タイプライブラリの定義が列挙されますので、その結果を比較することで、
それぞれの定義を調べることができます。
今回の場合は、Excel 本体のライブラリと、Office ライブラリの 2 本ですね。


そこにはたとえば、

【Excel ライブラリ】
  [odl, uuid(000208D5-0000-0000-C000-000000000046), …]
  interface _Application : IDispatch {
         :
     [id(0x0000059f), propget, …]
     HRESULT CommandBars([out, retval] CommandBars** RHS);
         :
  }


【Office ライブラリ】
  [odl, uuid(000C0302-0000-0000-C000-000000000046), dual, oleautomation, …]
  interface _CommandBars : _IMsoDispObj {…}

  [uuid(55F88893-7708-11D1-ACEB-006008961DA5), noncreatable, …]
  coclass CommandBars {
      [default] interface _CommandBars;
      [default, source] dispinterface _CommandBarsEvents;
  };

などの定義があります。


> Aでエラーとなり
ということは、エラーになってしまう環境では、CommandBars プロパティの
DispID が違っているのかも知れません。たとえば
 Set objCmd = CallByName(xlApp, "CommandBars", vbGet)
のように、名前で検索した場合はどうなるでしょうか。


>>>> を使う場合は、MSO.DLL を参照していた方が良いとは思います。
>>> 了解しました。
たぶん、
 Excel 97   → MSO97.DLL ver2.0  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
 Excel 2000 → MSO9.DLL  ver2.1  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
 Excel 2002 → MSO.DLL   ver2.2  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
 Excel 2003 → mso.dll   ver2.3  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
 Excel 2007 → MSO.DLL   ver2.4  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
 Excel 2010 → MSO.DLL   ver2.5  {2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}
だと思います。

[ツリー表示へ]