dポイントプレゼントキャンペーン実施中!

エクセルVBA初心者です。

共有サーバーに置いたエクセルファイルを開いたときに、同フォルダにある、別のデータ保存用エクセルファイルのデータをコピーしてくるようにしました。

しかし、「インデックスが有効範囲にありません」のエラーになります。


ChDir "\\共有サーバー\Aフォルダ\"
Workbooks.Open Filename:= _
"\\共有サーバー\Aフォルダ\データ保存.xls"
Windows("データ保存.xls").Activate
Sheets("データ貼り付け").Select


ここでエラーになります→ Windows("データ保存.xls").Activate

エラー時、データ保存.xlsは開いた状態(Activate)になっており、開いた後に見つからない状態?になっているのでしょうか。

ちなみに Windows("データ保存.xls").Activate をスルーさせると、次のSheets("データ貼り付け").Select で同様のエラーになります(当たり前かな)。


試しに、記録マクロで動作を記録してコードを確認しましたが、
Windows("データ保存.xls").Activate となっており、違いがありません。


原因を教えていただければありがたいです。

よろしくお願いします。

A 回答 (2件)

Workbooks.Open Filename:= Thisworkbook.path & "\データ保存.xls"


Sheets("データ貼り付け").Select
でいいのでは。

データ保存.xlsを明示的に表現したいのであれば、
Sheets("データ貼り付け").Selectの前に
Workbooks("データ保存.xls").Activate
を追加
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

とりあえず解決しました!

このコードは、ThisWorkbookモジュールの「Workbook_Open」に記述していたのですが、新たに標準モジュールに記述し、ThisWorkbookモジュールの「Workbook_Open」にはApplication.Runで標準モジュールを走らせるようにしたらうまくいきました。

ThisWorkbookモジュールで何故エラーになるのかは理解していませんが、とりあえずよかったです。もっと勉強します。

教えて頂いた方法も試してみます。

ありがとうございます。

お礼日時:2013/09/17 15:33

データ保存.xlsが開く前に次のコードが走っているとか



ウエイトを入れてみては?

Application.Wait Now() + TimeValue("00:00:05") ’5秒待つ
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

とりあえず解決しました!

このコードは、ThisWorkbookモジュールの「Workbook_Open」に記述していたのですが、新たに標準モジュールに記述し、ThisWorkbookモジュールの「Workbook_Open」にはApplication.Runで標準モジュールを走らせるようにしたらうまくいきました。

ThisWorkbookモジュールで何故エラーになるのかは理解していませんが、とりあえずよかったです。もっと勉強します。

教えて頂いた方法も試してみます。

ありがとうございます。

お礼日時:2013/09/17 15:34

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