重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel1.xlsm から Excel2.xlsm を別ウィンドウで開く為に下記①のようなコードを書いたのですが、 Excel2.xlsm は立ち上がったものの、①の最終行で「実行時エラー '9': インデックスが有効範囲にありません。」とのメッセージが出てしまいます(なお、この時 Excel2.xlsm は読み取り専用の状態となってしまっているようです)。
 因みに、下記②のコード(同じウィンドウで開く)では問題無く Sheet1を開く事ができます。


Dim ExlApp As Object
Set ExlApp = CreateObject("Excel.Application")
ExlApp.Visible = True
ExlApp.Workbooks.Open "D:\Excel2.xlsm"
Set ExlApp = Nothing
Worksheets(Sheet1).Select '← エラー行


Workbooks.Open ("D:\Excel2.xlsm")
Worksheets(Sheet1).Select

 上記トラブルの解決策を教えて頂ければ幸いです。
 宜しくお願いします。

A 回答 (4件)

以下のようにしてください


Dim ExlApp As Object
Set ExlApp = CreateObject("Excel.Application")
ExlApp.Visible = True
ExlApp.Workbooks.Open "D:\Excel2.xlsm"
ExlApp.Worksheets(Sheet1).Select
'・・・select以降の処理・・・
'最後にExlAppはクリアする
Set ExlApp = Nothing
    • good
    • 0
この回答へのお礼

tatsu99さん、教えて頂いたとおりに修正して解決しました。
考えてみれば当然の事なのでしょうが全く気付きませんでした。
御教授、有り難うございました。

お礼日時:2019/05/20 21:28

No3です。


No3のマクロはエラーにはなりませんが、以降の処理で期待した結果が得られませんので取り消します。
    • good
    • 0

Excel のバージョンはいくつでしょうか。



>①の最終行で「実行時エラー '9': インデックスが有効範囲にありません。」

Sheet1 が変数であるなら、変数を代入している部分がなければ分かりませんし、また、その名称が違っている可能性が高いはずです。

ただ、①のコードは、オートメーションオブジェクトを生成しているのですから、これをマクロで立ち上げるというのは、いずれにしても変な感じです。WScript とも思えるようなコードです。
ともかく、Set ExlApp = Nothing は、ブックを手動で閉じるなら不要です。

'//
Sub AnotherExcel()
 Dim ExlApp As Object
 Dim Wb As Object
 Dim ShN As Variant
 ShN = 1
 Set ExlApp = CreateObject("Excel.Application")
 ExlApp.Visible = True
 Set Wb = ExlApp.Workbooks.Open("D:\Excel2.xlsm")
 Wb.Worksheets(ShN).Select
End Sub
    • good
    • 0
この回答へのお礼

WindFallerさん、以前にも回答頂いたことがあります。今回も有り難うございました。

Excel のバージョンはいくつでしょうか。
>この情報が不足していたことをお詫び致します。
Excel のバージョンは 2010(Windows7) 及び 16(Windows10)です。
いずれの場合も同じ結果となります。

Sheet1 が変数であるなら、変数を代入している部分がなければ分かりませんし、また、その名称が違っている可能性が高いはずです。
>これに定数のシート名を入れても同じ結果となる事は確認済みですし、②のコードではエラーとはならないのでその可能性は無いと思います。

ただ、①のコードは、オートメーションオブジェクトを生成しているのですから、これをマクロで立ち上げるというのは、いずれにしても変な感じです。WScript とも思えるようなコードです。
>別ウィンドウで開く為のマクロの適切な例がネットではこの例しか見つける事ができなかったので、余り理解せずに使用しています。
従って御指摘のような事になっている次第です。

ともかく、Set ExlApp = Nothing は、ブックを手動で閉じるなら不要です。
>アドバイス、有り難うございます。

お礼日時:2019/05/20 21:03

Worksheets(Sheet1).Select '← エラー行 を


Worksheets("Sheet1").Select '← エラー行
にしてください。
    • good
    • 0
この回答へのお礼

tatsu99さん、早速の回答を有り難うございました。
実は舌っ足らずで申し訳なかっのですが、御指摘のシート名は変数(紛らわしい命名で御免なさい)なので、②のケースではエラーになっておらず、取り敢えずはこれがエラーの原因ではありません。
又、何かあればお教え下さい。

お礼日時:2019/05/20 14:00

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