2016-09-29 6 views
1
Set xlobj = CreateObject("Excel.Application") 
    xlobj.DisplayAlerts = 0 

    xlobj.Workbooks.Open wbPathName & "\" & wbList(intListCounter), True, True 
    DoEvents 

    Dim wBk As Workbook 


    Set wBk = Workbooks(wbList(intListCounter)) 


    MsgBox wBk 

こんにちは、ワークブックは、私は上記のワークブックを持って

を割り当てることができませんでした。 "Set wBk ="の行は、範囲外のエラーを下付き文字にしています。

「wbList(intListCounter)」内の内容は、拡張子が付いたxlsmファイルを指しているため、ここでは何が正しいのですか。

しかし、私は "xlobj.Workbooks.Open"が原因だと思っていますが、上記のいくつかが以前のコンサルタントによって書かれているため、エラーを指摘できませんでした。

ありがとうございました!

答えて

1

これは問題です。Excel.Applicationクラスの新しいインスタンスを作成していますが、アクティブ(つまり、このプロシージャが実行されているインスタンス)からブックを開こうとしています。アクティブ/実行中のインスタンスではではないファイルがであるため、エラーが発生することが予想されます。

次の方法で解決することができます:

Set wBk = xlobj.Workbooks(wbList(intListCounter)) 

しかし、それはむしろハックようだ、とフォローするのが難しいだろうコードからなります。

あなたは

Dim wBk As Workbook 
Dim xlObj as Excel.Application 

Set xlobj = CreateObject("Excel.Application") 
xlobj.DisplayAlerts = 0 
Set wBk = xlobj.Workbooks.Open(wbPathName & "\" & wbList(intListCounter), True, True) 

さらにファイルを開くながら、これは必要なときにあなたには、いくつかの時間があります(新しいExcelインスタンスを作成する必要はないかもしれない、Workbookオブジェクト変数に割り当てるものでなければなら、

Dim wbK as Workbook 
Set wBk = Workbooks.Open(wbPathName & "\" & wbList(intListCounter), True, True) 

をまた、このラインは438エラーが発生しますのでご注意:私はあなたが簡単に行うことができ、その場合にはそれが必要ではないほとんどの時間を)、と思う

MsgBox wBk 

必要な場合は、代わりにこれを行いますので、多くの

MsgBox wBk.Name 
+0

感謝を。チャームのように働いた! クイックサイドの質問: "コード" xlobj.Workbooks.Open wbPathName& "\"&wbList(intListCounter)、True、True "code" 上記の行の最後に「True、True」と表示されますか? – Dingo

+1

これは、 'UpdateLinks'と' ReadOnly'に 'True'パラメータを指定しています。 –

+0

[Excel Object Model Reference](https://msdn.microsoft.com/en-us/library/office/ff194068(v=office.14).aspx)からほとんどのものを見つけることができます。適切なオブジェクト/メソッド/ etc –

関連する問題