2015/03/13

3/13/2015
 excel2013のSDI対応、出来ました。いやぁやりました。
 概略を書くとCreateObjectでExcel.Application のオブジェクトを作成し、そのオブジェクトのメソッドWorkbooks.Openにて対象のExcelファイルを開き、RunAutoMacros xlAutoOpenでAuto_Open()マクロを実行するというもの。
 createObjectでExcelオブジェクトを開くと、非表示モードになるのでSDIとか画面が変わっていても影響しないようです。
 簡単なサンプルは以下のとおりです。
   Dim o As Object
   Set o = CreateObject("Excel.Application")
   With o
       .WorkBooks.Open("エクセルファイル").RunAutoMacros xlAutoOpen
       .Quit
   End With
   Set o = Nothing
 いやシンプルな対応ができて嬉しいことです。
 しかしながら、これでは一部問題があります。Excelが複数バージョンインストールされた環境だと、最後にインストールされたExcelで処理がなされます。
 Excel.Application.Version とバージョンを指定すれば指定可能とのレポートがありますが、筆者の環境ではうまく行きませんでした。
 このあたりは、少々苦労しましたが対処方法がありました。そちらについては今後アップします。


上記では問題があることがわかりました。Excel2013でWorkbooks.Openを最小化表示するにはの方法で対処できるのでそちらを参照してください。

0 コメント:

コメントを投稿