エクセルのWorkbooks.Openでエラーが発生する理由と回避方法

このQ&Aのポイント
  • エクセルのVBAコードでWorkbooks.Openを使用する際に、時折エラーが発生することがあります。
  • エラーの内容は「実行時エラー1004 workbooksクラスのOpenプロパティを取得できません」と表示されます。
  • このエラーは、コードを実行した際にファイルが正しくオープンされなかった場合に発生します。具体的な原因はわかりませんが、いくつかの回避方法があります。
回答を見る
  • ベストアンサー

Workbooks.Open

Set xlApp = CreateObject("Excel.Application") Set xlWbk = xlApp.Workbooks.Open("C:\Users\test".xlsx", , , Password:="0000") の部分でエラーが発生する時があります。 しかし毎回同じコードなのに エラーが発生する時としない時があります。 その違いが判りません。 エラーの内容は、 実行時エラー1004 workbooksクラスのOpenプロパティを取得できません。 です。 win8、オフィス2010です。 どういう意味のエラーなのでしょうか? 回避する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 さくっと調べただけですが、既に同名のブックを開いていても発生するエラーのようですね。 同名のブックを開いている場合に発生しておりませんか?

参考URL:
http://officetanaka.net/excel/vba/file/file01.htm
awdvcjvebs
質問者

お礼

ありがとうございます。

関連するQ&A

  • Workbooks.Open VBA

    Dim xlApp As Object Dim xlWbk As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWbk = xlApp.Workbooks.Open("C:\Users\test.xlsx") の後に、 xlWbk.Sheets("1").Select とするのと、 xlApp.Sheets("1").Select とするのでは、 同じ意味ですか? どちらも C:\Users\test.xlsx の シートを選択することになりますか?

  • パスワード付のエクセルファイルをアクセスから開く方

    アクセスからエクセルのファイルを開きたいのですがうまくできません。 エクセルにはパスワードがかかっています。 なので Dim xlApp As Object Dim xlWbk As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWbk = xlApp.Workbooks.Open("C:\2010.xlsx", , , , Password:="0000") Set xlApp = Nothing としたのですが、エクセルファイルが立ち上がりパスワード入力画面が表示されます。 , , , , Password:="0000" が無視されているようです。 パスワード付のエクセルファイルをアクセスから開く方法をご教授ください。

  • Excelの起動

    1度に2つのExcelBookを起動させたいのですが、 (1方は計算対象として、もう1方は計算結果を書込み) Set xlApp = CreateObject("Excel.Application") Set xlBookS = xlApp.Workbooks.Open(Form1.Text1.Text) xlApp.Worksheets("シート1").Activate Set xlSheetS = xlBookS.Worksheets("シート1") Set xlBookK = xlApp.Workbooks.Open(Form1.Text2.Text) Workbooks.Open Form1.Text2.Text, Password:="パスワード " Set xlSheetK = xlBookK.Worksheets("シート2") としていますが、パスワードのところでエラーが発生 してしまいます。タイミングが悪いのでしょうか?それ とも全体的に問題があるとか。。。^^; よろしくお願いします。

  • VBScript Excel Workbooks

    全く下らない質問で申し訳ございません。 あくまでも、興味があったので質問しているだけで、 以下のやり方でなくても、やりたいことが実現できることは 分かっているのですが、教えて頂ければ幸いです。 VBScriptで Option Explicit Dim x, y Set x = CreateObject("Excel.Application") Set y = x.Workbooks.Open("D:\Sample.xlsx").Worksheets(1) | x.Workbooks(1).Close x.Quit Set y = Nothing Set x = Nothing 普通は、 Set y = x.Workbooks.Open("D:\Sample.xlsx") Set z = y.Worksheets(1) として、 y.Close とする方が分かりやすいのは分かっているのですが、 あえて、勉強を兼ねて、上記のように記述しました。 私が知りたい疑問は、Excelのファイルを2つ開いた場合です。 Option Explicit Dim x, y, z Set x = CreateObject("Excel.Application") x.Application.DisplayAlerts = False x.Visible = False Set y = x.Workbooks.Open("F:\Sample.xlsx").Worksheets(1) Set z = x.Workbooks.Add().Worksheets(1) z.Range("A1").Value = y.Range("A1").Value x.Workbooks(1).Close x.Workbooks(2).SaveAs("F:\Test_02.xlsx") x.Workbooks(2).Close x.Quit Set z = Nothing Set y = Nothing Set x = Nothing このプログラムで、 Set y = x.Workbooks.Open("F:\Sample.xlsx").Worksheets(1) の行が無ければ、「x.Workbooks(1).Close」もなく、 その下の行は、 x.Workbooks(1).SaveAs("F:\Test_02.xlsx") x.Workbooks(1).Close となり、問題なく「Test_02.xlsx」ファイルが出来ていました。 ファイルを2つ開いたので、「Workbooks(2)」となる、 と思ったのですが、どうやら違うようです。 (「インデックスが有効範囲にありません」というエラーになります) 何度も言いますが、こんなことで悩む必要がないのは 分かっているのですが、何か気になります。 上記のやり方で、Excelのファイルを2つ開いている場合の 2つ目のファイルを閉じる方法を教えてください。 ホント、下らない質問で申し訳ございませんが よろしくお願い致します。 以上

  • IIS7.0での、Excel WorkBooks.Openが失敗します

    IIS7.0での、Excel WorkBooks.Openが失敗します。 IIS7.0でのExcel操作で困っております。 環境  Windows2008Server IIS7.0  ASP(.Netでは無い)  Excel Win2000SVで動作しているWebシステムのリプレースのため、Win2008SVで動作検証中です。 このプログラムは、サーバー上のExcelファイルを開き、このExcelをHTML形式で出力(保存)します。そして出力されたHTMLを画面に表示させます。 Set dObjExcelApp = CreateObject("Excel.Application") dObjExcelApp.WorkBooks.Open Excelファイル名 dObjExcelBook = dObjExcelAppActiveWorkbook   中略 dObjExcelBook.SaveAs HTMLファイル名 これを実行すると WorkBooks.Openがコード:1004、"WorkBooksクラスのOpenメソッドが失敗しました。" で、エラーとなります。 当初CreateObjectが"70"でエラーとなっていたのですが、DCOM構成でアクセス許可を付与することによりエラーを回避しました。 しかし、WorkBooks.Openメソッド実行エラーの原因、対策が分かりません。 (パス不正とかではありません。) 同じコーディングをしたVBプログラムは正常に動作します。 原因、対処方法、または代替案などご存知の方がいらっしゃいましたら、ご教示ください。 宜しくお願いいたします。

  • エクセルvba

    エクセルvbaなのですが Sub test() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) 'コード・・・ Set xlApp = Nothing Set xlBook = Nothing End Sub これだと Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) の部分で、エラーになります。 実行時エラー1004です。 自身ファイルをオブジェクトに格納して操作したいのですがどうすればいいでしょうか?

  • アクセスからエクセルファイルが開けない

    Cドライブに、新規 Microsoft Office Excel ワークシート.xlsxと言うファイルを作成しました。 そのうえで、アクセスから ―――――――――――――――――――――――――――――――― Sub できない1() Dim xlsWB As Object Set xlsWB = CreateObject("C:\新規 Microsoft Office Excel ワークシート.xlsx") xlsWB.Application.Run xlsWB.Name Set xlsWB = Nothing End Sub ―――――――――――――――――――――――――――――――― をすると ------------------------ 実行時エラー '1004' マクロ'新規 Microsoft Office Excel ワークシート.xlsxを実行できません。 このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 ------------------------ となります。 なので別の方法で開こうと、 ―――――――――――――――――――――――――――――――― Sub できない2() Dim xlApp As Excel.Application Dim xlBook As Excel.Application Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\新規 Microsoft Office Excel ワークシート.xlsx") xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ―――――――――――――――――――――――――――――――― にしたのですが、 実行時エラー’13’型が一致しません になります。 何がダメなのでしょう? マクロ付きファイルにしないとダメですか? もしくはファイル名に空白があるからエラーになるのでしょうか? そして、なぜ二つのコードのエラー内容がちがうのでしょう? それと、なぜか上記マクロを実行していると ~$新規 Microsoft Office Excel ワークシート.xlsx と言うファイルが出来上がります。(添付画像参照) でもファイルは開いていません。 この状態で、新規 Microsoft Office Excel ワークシート.xlsx をダブルクリックして開こうとすると、一瞬だけ画面に表れてすぐ消えます。 オフィスのバージョンは2007です。 ご回答よろしくお願いします。

  • CreateObject関数 引数にパスワード

    CreateObject関数を使ってエクセルを開く際に、 引数にパスワードを設定することは可能ですか? 新規Microsoft Excel ワークシート.xlsと言うファイルには、 読み足りパスワードとして0000と言うパスワードが設定されているのですが Sub Sample() Dim MyPath As String Dim MyFile As String Dim xlApp As Object Dim xlBook As Object MyPath = "C:\" MyFile = "新規Microsoft Excel ワークシート.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(MyPath & MyFile) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub このようなvbaコードで開く時に、 どうやってパスワードを設定すればいいでしょうか? Set xlBook = xlApp.Workbooks.Open(MyPath & MyFile),"0000" こうすると構文エラーになります。 Sub Sample02() Dim MyPath As String Dim MyFile As String MyPath = "C:\" MyFile = "新規Microsoft Excel ワークシート.xls" Workbooks.Open Filename:=MyPath & MyFile, Password:="0000" End Sub これのCreateObjectバージョンが知りたいです。

  • vbs Do文がうまく機能しない?

    下記のコードを書いたのですが、うまく機能しません。 やりたいことは、ある読取りパスワードが設定されているエクセルファイルに、いくつかのパスワードを自動で適用して、パスワードが一致した時にエクセルファイルを開くということです。 実際にエクセルファイルに「password1」と設定して実行するとうまく開くのですが、「password2」を設定した場合、エクセルファイルは開かずに終わってしまいます。 私としては、Do文が絡んだときにPASSという変数にpassword2の文字列がうまく代入されていないのではないかと思っていますが、原因がわかりません。 何かご指摘を頂けると助かります。 ====================================================== Dim xlApp, PASS Dim x On Error Resume Next x = 1 Do until x = 10 Set xlApp=CreateObject("Excel.Application") If x = 1 Then PASS = "password1" If x = 2 Then PASS = "password2" xlApp.Workbooks.Open "D:\pass\test.xls", 0, False, 5, PASS If Err.Number = 0 Then xlApp.Visible = True Exit Sub End If xlApp.Workbooks.Close Set xlApp = Nothing x = x + 1 Loop On Error Goto 0 Set xlApp = Nothing ====================================================== よろしくお願いします。

  • エクセル アプリケーションの待機時間を設定したい

    VBAで Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(MyFileName) のあとに、 xlApp.Visible = True ココを通過するときに、3分くらい経ってから 「ソースアプリケーションがビジー状態のため、オブジェクトが応答しません。」 と表示される時があります。 このメッセージが表示されるまでの時間を設定したいのですが そのようなVBAコードはありますか?

専門家に質問してみよう