プロが教えるわが家の防犯対策術!

新ブックを作成し、このブックに ほかのブックの複数シート(一つのシートのこともある)を
追加しようとしています。

追加するシートをもつブックを Abc.xlsx とし、そのシート ( DataS(シート数) 、シート数は
CountS ) を 新ブックの D:\Temp.xlsx へ 追加する場合です。 

次のマクロ内容を実行すると、

***** 新BOOK作成 *****
ActiveWorkbook.SaveAs fileName:="D:\Temp.xlsx"
'
For a = 1 To CountS
Workbooks("Abc.xlsx").Sheets(Trim(DataS(a)).Copy before:=Workbooks("Temp.xlsx"). _
Sheets(a)
Next a
'
次のエラーが出ることがあります。

『実行時エラー '-2147417848(80010108)':

オートメーション エラーです。
起動されたオブジェクトはクライアントから切断されました。』

何回も、別の ブックの シートを 追加する時に、一回目は 問題ないが、二回目に この
エラーがでることがあります。
エラーが出た後、一旦、この実行ブックを閉じて、再起動すると、OKとなります。

エラーの原因が、このマクロ部分のみの影響によるのかどうか、ということも ありますが、
単純に、このマクロだけで、このエラーが起こる、ということは あるのでしょうか?

Windows 8.1 Excel 2013 の 場合は、以前は、このエラーは起きていなかったのですが、今回
以前と違うマクロを作成した時に このエラーが起きるようになりました。
以前は、Windows With Bing Excel 2013 では このエラーが 起きることがありました。

このエラーの 発生が どのような場合に 起きるのか、回避方法 は どうすれば いいのか
お教え願えませんでしょうか?
内容不十分かも、わかりませんが、よろしく、お願いします。

A 回答 (1件)

こんにちは。



最初に、答えは分かりません。
ただ、オートメーションエラーなら、オートメーションを使っていることになるはずですが、コードには出てきていませんから、分からないということです。まあ、全体的には、コードは間違いないだろうということだけです。

>起動されたオブジェクトはクライアントから切断されました。』
ということは、オブジェクト(ブックやシート)に命令を与えたら、途中で切れてしまいました、という意味だと思います。命令を与える相手を、コンテナ型(親オブジェクトから書くこと)をしなかったとかで、暗黙的に指していたはずなのに、途中で移動してしまったとか。

Workbooks("Abc.xlsx").Sheets(Trim(DataS(a)).Copy
これは、括弧がひとつ抜けていますね。書き損じただけだと思います。

Trim(DataS(a)) この中身はいいとしても、添字は、1からだと思います。

その程度は、お約束だから、大した話でもありません。

>このマクロだけで、このエラーが起こる、ということは あるのでしょうか?

私は、それはないと思いますが、私は、そのような方法は取りません。理由は、コードがややこしいからです。
受け側の Workbooks("Temp.xlsx"). Sheets(a) 
で、添字で場所を換えていますが、先頭から、シートの順逆に入れても同じだからです。

For a = UBound(DataS) To 1 Step -1
  Workbooks("Abc.xlsx").Sheets(Trim(DataS(a))).Copy _
  Before:=Workbooks("Temp.xlsx"). Sheets(1)
Next a

しかし、これを書いたところで、他人の物笑いの種になる程度でしかありません。それより、OS側の問題で修復を掛けられるなら、試してみる価値はあるとは思います。
    • good
    • 0
この回答へのお礼

やむを得ず、長期に出かけていて、お礼するのが遅れて申し訳ありません。
いろいろと、ご意見ありがとうございました。
とりあえず、OS側の修復をかけてみたいと思います。
なにが問題かも、理解できてはおりませんので、また、結果により、質問するかもわかりませんが、その時は、また、よろしくお願いします。

お礼日時:2015/09/15 07:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています