質問
2018年11月26日月曜日 8:34
※別の場所で質問していたのですが、こちらのファーラムのほうが適切なので再度質問致します。
サーバからオートメーションサーバを利用してアドインファイルを開こうとすると以下のエラーが発生し、解決法が分からなく困っています。
実行時エラー'-2147417851(80010105)':
'Open' メソッドは失敗しました:'Workbooks' オブジェクト
Sub Excelファイル起動()
With CreateObject("Excel.Application")
.Workbooks.Open "http://xxxxxxxx/Book1.xla"
End With
End Sub
しかし、Openの前にWorkbooks.Addを実行すると、正常に開くことができます。
以下のコードで正常に開くことができました。
Sub Excelファイル起動()
With CreateObject("Excel.Application")
.Workbooks.Add
.Workbooks.Open "http://xxxxxxxx/Book1.xla"
End With
End Sub
ローカルに保存したアドインファイルは正常に開くことができました。
環境は以下のようになっています。
・Windows 10 Pro
・Excel 2016 16.0.4266.1001 32bit
なぜサーバにあるアドインファイルのOpenに失敗しているのでしょうか。
宜しくお願い致します。
すべての返信 (5)
2018年12月10日月曜日 7:01 ✅回答済み
最新のバージョンに更新したところ、正常にアドインを開けるようになりました。
検索では引っかからなかったのですが、Microsoftのサイトに記述があり、Workbook.Openによってクラッシュする問題がOffice2016で発生していたが、2018年1月のアップデートで修正されたみたいです。
https://docs.microsoft.com/ja-jp/officeupdates/monthly-channel-2018
以下、引用
バージョン 1711: 1 月 2 日
バージョン 1711 (ビルド 8730.2165)
Excel: セキュリティ以外の更新プログラム
-
- ピボットテーブルのプログラムによる作成の後にプログラムによる更新が行われると、Excel がクラッシュする問題を修正します。
プログラムで Workbook.Open() を呼び出すと、Excel がクラッシュする可能性がある問題を修正します。
2018年11月28日水曜日 0:09
私の方では試してませんが、そもそも、エクセルにsスイッチ(セーフモード)とeスイッチ(新規ブックなし)付きで起動した状態でサーバー上のアドインを手動で読み込むことはできるのでしょうか?
また、取り急ぎの解決方法としては、アドインを読み込む前に「.Workboos.Add」でよろしいのでは?
With CreateObject("Excel.Application")
Set wbTemp = .Workbooks.Add
.Workbooks.Open "http://xxxxxxxx/Book1.xla"
wbTemp.Close False
Set wbTemp = Nothing
End With
2018年11月28日水曜日 5:49
回答ありがとうございます。
>>エクセルにsスイッチ(セーフモード)とeスイッチ(新規ブックなし)付きで起動した状態でサーバー上のアドインを手動で読み込むことはできるのでしょうか?
試してみましたが、できませんでした。
ブックがない状態だとVBAにプロジェクトがなく、標準モジュールを追加することができませんでした。手動でブックを追加したら、VBAにプロジェクトが追加され、標準モジュールを追加でき、手動でサーバ上のアドインを読み込むことができました。
なぜブックをAddすると開けるのでしょうか?
2018年11月28日水曜日 14:02
説明の仕方がまずかったようで・・・
「アドインを手動で読み込む」とは、コードで読む込むのではなく、「エクセルウインドウ上にアドインファイルをドロップして開けるのか」という意味です。
(もちろん、ファイルの「開く」からアドインを開くのも可)
この質問の意図は、そもそも手動でも開けないのなら、VBAで開けるはずがないと思ったからです。
2018年12月3日月曜日 6:50
自分も勘違いしてました。再度、検;しました。
サーバにあるアドインファイルをいったん、ローカルに保存し、
sスイッチ(セーフモード)とeスイッチ(新規ブックなし)付きで起動した状態のExcelに、
ドラック&ドロップすると、正常に開くことができました。
Excelからオートメーションサーバーを利用してサーバ上のアドインを開くと失敗するのですが、
Excel = CreatObject("Excel.Application")
Excel.Workbokks.Open "http://xxxxx/Book1.xla
Excel上でオートメーションサーバを利用しないでサーバ上のアドインを開くと成功します。
Workbooks.Open "http://xxxxx/Book1.xla"
しかも、オートメーションサーバでExcelを見えるようにした状態でOpenすると、エラーが発生するのですが、新しく起動したExcelを操作すると、アドインが正常に開けており、ブックの挿入・保存などの操作することができました。保存したファイルは正常に開くことができました。ただし、起動したExcelを閉じるとExcelがフリーズします。
Excel = CreateObject("Excel.Application")
Excel.Visible = true
Excel.Workbooks.Open "htttp://xxxx/Book1.xla" ←ここでエラー発生
使用しているExcelのバージョンがやや古いので、アップデートでエラーが発生しなくなる可能性はありますか?
Office製品に食わくないのですが、自分で確認した限りでは、オートメーションサーバに関係ありそうなアップデートはありませんでした。
外部ネットワークに接続できない環境でテストしているので、すぐにExcelを更新することができない状況です。