• ベストアンサー

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 の シートを選択することになりますか?

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

  • ベストアンサー
回答No.1

こんにちは。 > の後に、 というのが、「の直後に、」であれば、   xlWbk.Sheets("1").Select と   xlApp.Sheets("1").Select は、 同じ[結果]になります。 > の後に、   xlApp.Workbooks.Open "C:\Users\HOGE.xlsx" などのように、xlAppで他のブックを開いた場合には、   xlWbk.Sheets("1").Select では、xlWbkのウィンドウがアクティブではない為、エラーになります。   xlApp.Sheets("1").Select では、2つめに開いたHOGE.xlsxブックのシートを参照する為、 Workbooks("HOGE.xlsx").Sheets("1")が存在すれば、そのシートを選択、 同、存在しなければエラーになります。   xlWbk.Sheets("1").Select は、絶対的な参照、   xlApp.Sheets("1").Select は、相対的な参照、 同じ[結果]になる場合もありますが、 異なる結果を返す場合もあります。 従って、 同じ[意味]という言い方は正確ではありません。という解答になります。   Set xlWbk = xlApp.Workbooks.Open("C:\Users\test.xlsx") 「の直後に、」であれば、[結果的には] どちらも C:\Users\test.xlsx の シートを選択することになり ます。

DRGXRGFY
質問者

お礼

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

関連するQ&A

  • シートを選択したい vba

    自身のファイルを読み取り専用で新たに立ち上げて、シートを選択したいのですが Private Sub cmd_読み取り専用で開く_Click() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ActiveWorkbook.FullName) xlApp.Visible = True xlApp.xlBook.Sheets("メイン").Select Set xlApp = Nothing Set xlBook = Nothing End Sub だと xlApp.xlBook.Sheets("メイン").Selectでエラーになります。 文法が間違ってると思うのですが、修正案をご教授ください。

  • Workbooks.Open

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

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

    アクセスからエクセルのファイルを開きたいのですがうまくできません。 エクセルにはパスワードがかかっています。 なので 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" が無視されているようです。 パスワード付のエクセルファイルをアクセスから開く方法をご教授ください。

  • エクセル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です。 自身ファイルをオブジェクトに格納して操作したいのですがどうすればいいでしょうか?

  • SETを使ったほうがよい?

    accwessからエクセルファイルを開きたいのですが、 App.Workbooks.Open と、 Set xlBook = xlApp.Workbooks.Open とどちらを使った方がいいのでしょうか? ////////////////////////////////////////////////////////// Private Sub ファイル1_Click() Dim App As Object Dim MyFileName As String MyFileName = "D:\My Documents\test.xls" Set App = CreateObject("Excel.Application") App.Workbooks.Open FileName:=MyFileName App.Visible = True End Sub でも Private Sub ファイル2_Click() Dim xlApp As Object Dim xlBook As Object Dim FileName As String Const FolderName = "D:\My Documents\test.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(FolderName & FileName) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ////////////////////////////////////////////////////////// でも開けました。 多分、SETを使うかどうかの違いだと思うのですが VBAでコードを作る際、どちらのコードを使った方がいいか教えてください。

  • 実行時エラー 1004 Rowsメソッドは失敗しま

    アクセスからエクセルファイルを開いています。 Sub tset() Dim int行数 As Integer Dim xlApp As Object Dim xlWbk As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWbk = xlApp.Workbooks.Open("C:\test.xlsx") xlApp.Sheets(1).Select int行数 = xlApp.Cells(Rows.Count, "A").End(xlUp).Row xlWbk.Close xlApp.Quit Set xlApp = Nothing End Sub このコードなのですが、1回目は普通にファイルが開いて閉じるのに 同じこのプロシージャーを2回連続で実行しようとすると 2回目は必ず int行数 = xlApp.Cells(Rows.Count, "A").End(xlUp).Row の部分で、 実行時エラー 1004 Rowsメソッドは失敗しました。 _Globalオブジェクト となります。 なぜ最初は問題なくコードが通るのに 2回目はダメなのでしょうか?

  • 「もし既にファイルを開いているなら、開かない」

    おはようございます。 accessからExcelのブックを開く処理をしています。 VBAでファイルを開く時に、「もし既にファイルを開いているなら、開かない」 という行為をしたいのですが、どのようにすればいいでしょうか? *************************************************************************** Sub サンプル() Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\【Excel】\料理.xlsm") xlApp.Visible = True'ファイルを開く?表示する? Set xlApp = Nothing Set xlBook = Nothing End Sub *************************************************************************** このコードの、 xlApp.Visible = Trueを、 if xlBook がまだ開いてない then xlApp.Visible = True Else End If のような事がしたいのですが、可能でしょうか? ご教授よろしくお願いします。

  • Excel.Applicationへのシートコピー

    Public xlApp As Excel.Application Public xlBook As Excel.Workbook Set xlApp = CreateObject("Excel.Application") '非表示・画面更新無・アラート非表示 xlApp.Visible = False xlApp.ScreenUpdating = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Add xlBook.SaveAs "test123.xls" '※ここでエラー Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlApp.Workbooks(xlBook).Sheets(3) Set xlApp = Nothing Set xlBook = Nothing 環境:WindowXP SP2,Excel2003 SP3 以上のようにオブジェクト変数のEXCELに対してのシートコピーを行いたいのですが、コンパイルを行うとエラーがなく、実行すると「コンパイルエラー 修正候補:区切り記号 または(」とエラーが発生します。色々書き方を試してみたのですが、どれもうまくいきませんでした。 宜しくお願いします。

  • 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バージョンが知りたいです。

  • 開いているXLSファイルが読み取り専用か調べる

    Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\test.xls") Set xlSheet = xlBook.Worksheets(1) 開いたExcelファイルが読み取り専用になっているかどうかを調べるにはどうすればいいですか? ファイルの属性が読み取り専用かどうかは取得できるのですが、属性は読み取り専用ではなくても誰か他のユーザーがネットワークから開いているために読み取り専用で開いている場合もわかるようにしたいです。 お願いします。

専門家に質問してみよう