none
「Dsoframer(ActiveX)」の動作環境について RRS feed

  • 質問

  • お世話になります。

    フォーラム違いであれば、ご容赦ください。

    Microsoftの技術情報として公開されているサンプルプログラム「Dsoframer(Visual C++ ActiveX コントロール)」
    を利用して、ブラウザ(IE)上でExcelを操作する仕組みを調査しようとしています。

    【環境】
     ・OS:Windows 10 Pro
     ・IE:Internet Explorer 11
     ・Office:Office 2010(Excel 2010)
     ※検証はローカルPCで実施

    【ActiveXプログラムの取得元】
     https://support.microsoft.com/ja-jp/kb/311765

    上記のActiveXサンプルプログラムに含まれる「webtest.htm」で検証を行っていますが、一部エラーとなる機能があります。
    これについて、可能な範囲で情報提供頂ければ幸いです。

    ※「http」などの全角文字は半角に読み替えてください。

    動作した機能(JavaScriptで検証)
     ○「Open」機能(ローカルのExcelファイルをフルパスで指定)。
       ----------------------------------------------------
       例:document.all.oframe.Open("C:\\temp\\Sample.xls");
       ----------------------------------------------------

     ○「Save」機能(ローカルの保存先をフルパスで指定※上書き)。
       ----------------------------------------------------
       例:document.all.oframe.Save("C:\\temp\\Sample.xls",true);
       ----------------------------------------------------
     
    エラーとなる機能
     ●「Open」機能(HTTPリクエストによるのExcelファイル呼出し)。
      ※JavaScriptで呼出す方法で検証(自PCにWebアプリケーションサーバ/WebDavの環境を用意)
       ----------------------------------------------------
       例:Webアプリケーションサーバの「~\webapps\ROOT」直下にExcelを配置
           document.all.oframe.Open("http://localhost:8080/Book1.xls",false,"Excel.Sheet","","");
           document.all.oframe.Open("http://localhost:8080/Book1.xls",false);
          
       例:WebDav(IIS)を用意しWebDavの仮想ディレクトリにExcelを配置
           document.all.oframe.Open("http://localhost/webdav/Book1.xls",false,"Excel.Sheet","IUSR","");
       ----------------------------------------------------
       
     ●「Save」機能(HTTPリクエストによるのExcelファイル呼出し)。
      ※JavaScriptで呼出す方法で検証(自PCにWebアプリケーションサーバ/WebDavの環境を用意)
       ----------------------------------------------------
       例:Webアプリケーションサーバの「~\webapps\ROOT」直下にExcelを配置
           document.all.oframe.Save("http://localhost:8080/Book1.xls",true,"","");
           document.all.oframe.Save("http://localhost:8080/Book1.xls",true);
          
       例:WebDav(IIS)を用意しWebDavの仮想ディレクトリにExcelを配置
           document.all.oframe.Save("http://localhost/webdav/Book1.xls",true,"IUSR", "");
       ----------------------------------------------------

     上記のいずれも以下のエラーが発生(IEのスクリプトエラー表示を有効にすると表示される)。
     ------------------------------------------------------------------------------------------------
     Opening/saving a document from a URL requires the Microsoft Internet Publishing Provider installed with MDAC 2.5 or Office 2000/XP.
     ------------------------------------------------------------------------------------------------
     
     何らかの環境やライブラリのインストールが必要なのかと推測しますが、もし分かればご教示ください。


    【補足】
     上記のActiveXプログラムは「Microsoft Visual C++ 6.0 Professional」で作成されたもので、
     用意できなかったので、「Visual Studio Community 2015」でデバッグも試みましたが、コンパイルも通らず断念しました。

    2016年7月22日 1:35

回答

  • "Microsoft Internet Publishing Provider"なるものは検索してもまるで見あたらず、見つかる物と言えば"Microsoft Data Access Internet Publishing Provider"ばかりですが、もしこの両者が同じであるのならば、以下のページが参考になるかもしれません。

    WebDAV アクセスするためのコンポーネント (WebClient と MSDAIPP)

    このページによれば、Windows 7以降はOffice 2003以前を入れる以外にとれる手段はなさそうですね。

    • 回答としてマーク 星 睦美 2016年7月27日 2:54
    2016年7月22日 5:21
  • 【C】[SAMPLE] Visual Basic または HTML で Office ドキュメントをホストする Visual C++ ActiveX コントロール
    https://support.microsoft.com/ja-jp/kb/311765

    【C】の一番下にもエラーコードが載っていますね。
    0x80041106 Opening/saving a document from a URL requires the Microsoft Internet Publishing Provider installed with MDAC 2.5 or Office 2000/XP.

    【C】でダウンロードできるソースコードにおいて「MSDAIPP」で検索すれば、関連箇所がよくわかります。
    • 回答としてマーク 星 睦美 2016年7月27日 2:54
    2016年7月22日 6:21

すべての返信

  • エラーメッセージにあるようにOffice 2000もしくはOffice XPが必要なのではないでしょうか?
    2016年7月22日 3:14
  • 返信ありがとうございます。

    確かにエラーメッセージのとおりなのだと思うのですが、Office2010以降での検証をしたく、

    「Office2010」以降で動作させるための情報があれば助かります。

    もし「Office 2000/XP」以外ダメであれば、ActiveXプログラムの解析が必須ですね。。

    2016年7月22日 4:26
  • "Microsoft Internet Publishing Provider"なるものは検索してもまるで見あたらず、見つかる物と言えば"Microsoft Data Access Internet Publishing Provider"ばかりですが、もしこの両者が同じであるのならば、以下のページが参考になるかもしれません。

    WebDAV アクセスするためのコンポーネント (WebClient と MSDAIPP)

    このページによれば、Windows 7以降はOffice 2003以前を入れる以外にとれる手段はなさそうですね。

    • 回答としてマーク 星 睦美 2016年7月27日 2:54
    2016年7月22日 5:21
  • Hongliang さんの示すリンクが有用だと思います。

    【A】WebDAV アクセスするためのコンポーネント (WebClient と MSDAIPP)
    https://technet.microsoft.com/ja-jp/windows/win7_tips64.aspx


    >もしこの両者が同じであるのならば、

    サンプルソースを見ましたが同じです。

    なので、MSDAIPP (Microsoft Data Access Internet Publishing Provider )が無いと動きません。

    【B】Web フォルダーのソフトウェア更新プログラムの説明: 2007 年 5 月 18日
    https://support.microsoft.com/ja-jp/kb/907306
    をインストールすれば、コンポーネントをインストールできる可能性はありそうです。

    ただし、【A】によると「Windows 7 でも修正プログラム 907306 のインストールは可能ですがサポートされていません。」 のような記載があるため、ダメ元になります。
    2016年7月22日 6:16
  • 【C】[SAMPLE] Visual Basic または HTML で Office ドキュメントをホストする Visual C++ ActiveX コントロール
    https://support.microsoft.com/ja-jp/kb/311765

    【C】の一番下にもエラーコードが載っていますね。
    0x80041106 Opening/saving a document from a URL requires the Microsoft Internet Publishing Provider installed with MDAC 2.5 or Office 2000/XP.

    【C】でダウンロードできるソースコードにおいて「MSDAIPP」で検索すれば、関連箇所がよくわかります。
    • 回答としてマーク 星 睦美 2016年7月27日 2:54
    2016年7月22日 6:21
  • Hongliangさん 返信ありがとうございます。

    示していただいたページは私も確認していたのですが、理解できていなかったようです。。

    ※Office2010だと「WebClient」が使われるってことかな?・・程度にしか。。

    ありがとうございました。

    2016年7月22日 7:06
  • qt6さん 返信ありがとうございます。

    > 【B】Web フォルダーのソフトウェア更新プログラムの説明: 2007 年 5 月 18日
    > https://support.microsoft.com/ja-jp/kb/907306
    > をインストールすれば、コンポーネントをインストールできる可能性はありそうです。

    なるほど、情報ありがとうございます。

    確認して、試してみます。

    > 【C】でダウンロードできるソースコードにおいて「MSDAIPP」で検索すれば、関連箇所がよくわかります。

    ありがとうございます。

    C++は経験ないので、読み解けるかどうかはわかりませんが。。

    サンプルソースを追ってみたいと思います。

    解決もしくは、何らかの進展あれば報告いたします。

    ありがとうございました。

    2016年7月22日 7:13
  • > 【B】Web フォルダーのソフトウェア更新プログラムの説明: 2007 年 5 月 18日
    > https://support.microsoft.com/ja-jp/kb/907306

    更新プログラムはすでに削除されているようで、ダウンロードできませんでした。

    更新プログラムに含まれる

    ・Fp4awec.dll
    ・Msdaipp.dll
    ・Msdapml.dll
    ・Msonsext.dll
    ・Pkmws.dll  

    があれば、動くのかもしれませんが、Microsoft以外のサイトからダウンロードできる

    ファイルを使うのは少々危険な気がするので、サンプルソースをそのまま流用するのではなく、

    べつの処理方法を実装するなどで検討してみたいと思います。

    ありがとうございました。

    2016年7月22日 7:36
  • 参考までに、Internet Archive からなら、ダウンロードできました。

    https://web.archive.org/web/20160114232000/https://download.microsoft.com/download/b/7/2/b72c48b9-a1f8-49fc-9f75-71af93ec90b0/Webfldrs-KB907306-ENU.exe

    Microsoft以外のサイトからダウンロードできるファイルを使うのは少々危険な気がする

    まぁそうですね、、。

    • 編集済み qt6 2016年7月22日 7:59
    2016年7月22日 7:54