• ベストアンサー

VBA Workbooks.open

cj_moverの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

#1、cjです。お礼欄拝見しました。 > まだ開いて無いファイルだからコレクションには入ってないという事ですね。 はい、その認識で合っています。 一般的なコレクション(コレクションオブジェクト)の扱いとしては、 一段階めで、新しいオブジェクトのインスタンス(実体)を生成してから 次の段階で collection.Add Key:="name", Item:=newobject のような書式でコレクションに追加します。 Workbooks.Open Filename:="filename.xls" の場合は、オブジェクトの実体を生成すると同時に、 コレクションへの追加をしています。 > だからこそworksheetにはないopenやcloseメソッドがあると。 誤解のないように補足しておきますが、 Workbooks.Open Filename:="filename.xls" これは、Workbooks コレクションのOpen メソッドです。 Workbooks("filename.xls").Close これは、Workbook オブジェクトのClose メソッドです。 (Workbooks コレクションには、すべてのブックを閉じるClose メソッドがありますが、  これは、現在ではほぼ使われることのないもの、いわばレガシーです。) Workbooks("filename.xls") は、 Workbooks.Item("filename.xls") の省略形ですが、 例外なくWorkbook オブジェクトを参照します。 「Workbooks」だけならWorkbooks コレクション、 「Workbooks()」と括弧が付いた部分を含めて、それは (Workbooks コレクションのItemとしての)Workbook オブジェクトであって、 必然的に、Workbooks コレクションのメソッドは使用できません。 Open メソッド、と、Close メソッドとでは、処理対象(Parent)が別物なのです。 以上、補足として追記しておきます。

High_Score
質問者

お礼

再回答ありがとうございます。 括弧ツキとなしではオブジェクトかコレクションかの違いがあるのですね。実は頭の中で不鮮明な理解だった部分です。スッキリしました。

関連するQ&A

  • WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】

    よろしくお願いします。 今あるブックにあるシートを別のブックにコピーしたいのですが、今考えているのは ここから//////// 'ブックを開く Workbooks.Open コピー元のブックのパス 'シートをコピー Worksheets.Item(コピーするシート名).Copy _ after:=Workbooks(コピー先のブック名).Sheets(1) 'ブックを閉じる Application.DisplayAlerts = False Workbooks.Item(コピー元のブック名)Close True Application.DisplayAlerts = True ここまで//// なのですが、コピーものとのブックが複数ある時、画面がチラチラしてしまいます。ブックをオープンさせずにシートを他ブックにコピーさせる方法ってないでしょうか。 ご存知の方がいらっしゃいましたら、ご教授お願いします。

  • エクセルVBAでFileNameを使用してブックを開き又は保存する方法

    現在の構文は以下の通り作成し使用しています。 Dim FileName1 FileName1="\\C\台帳.xls" Workbooks.Open FileName1 で目的のブックを開きます。  更新等の作業をした後ブックを保存する場合 Workbooks("台帳.xls").Close Savechanges:=true  で保存していますが、 (1)「FileName1」を使用して保存する方法を教えて頂きたいのですが可能でしょうか。 (2)同時に「FileName1」を使用してブックをアクティブにしたりセレクトする方法も教えて頂きたいのです。 ブックをセーブ・アクティブ・セレクトするたびにブックの名前をいちいち入力していますが、「FileName1」を使用してブック名の入力手間を減らしたいのです。

  • VBA-Workbook_Open()イベントで

    再度、お世話になります。 手順1.book1よりボタンをクリックしてbook2を開く 手順2.あるフォルダの.xlsファイル名をボタン名に貼り付ける 手順3.book2の戻るボタンでbook2を閉じ、book1を開く 手順4.手順1を実行する という流れを行ったところ1回目のbook2の表示の際にはうまくファイル名を表示できるのですが、戻った後の2回目のbook2の表示ではファイル名が1回目のときのままになってしまいます。 一部 [book2での処理] ***Module1*** Public strPath as String ***ThisWorkbook*** Public Sub Workbook_Open() strPath = "C:\" & Worksheets("Sheet1").Range("A1") myName = Dir(strPath & "\*.xls", vbDirectory) If myName <> "" Then FCnt = FCnt + 1 Worksheets("Sheet1").OLEObjects("btn" & FCnt).Object.Caption = myName Do ・・・(略) Loop End If End Sub ***Sheet1*** Private Sub btnBack_Click() Workbooks.Open Filename:="C:\book1.xls" Workbooks("book2.xls").Close saveChanges:=False End Sub のようにしています。 お手数をおかけしますが、どなたかご教授お願いいたします。

  • Excel VBAの実行中に実行を中断して通常のエクセル作業を入れたい。

    Excel VBAの実行中に実行を中断して通常のエクセル作業を入れる方法を教えてください。 1.Application.GetOpenFilenameで選択してワークブックを開く。 2.そのワークブックのシートの中から目的とするシートを選択する。 3.選択したシートを新しいワークブックにコピーする。 4.開いたワークブックを閉じる。 という一連の作業の中で、2.については通常のエクセルの作業のようにシートを一枚ずつ確認して選択する必要があります。 現在、stopを使って強引に中断させているのですが、何か良い方法はありますでしょうか? よろしくお願いします。 ちなみに、今、私が作っているのプロシージャーは下記のようなものです。 Private QUOTfile As String Private filename As String Sub QUOTfileOpen() QUOTfile = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If QUOTfile <> "False" Then Workbooks.Open QUOTfile End If filename = ActiveWorkbook.Name Stop ActiveSheet.Copy With Application .Dialogs(xlDialogSaveWorkbook).Show End With Workbooks(filename).Close saveChanges:=False End Sub

  • エクセルVBAでブックを開きたいのですが、

    エクセルVBAでブックを開きたいのですが、 アクティブシートを別のブックに移動させたいのですが、 まず、目的のブックを開く → 移動させたいシート名を右クリック → 移動またはコピー を選択 → 移動先ブック を選択  というふうにしようと思っていますが、 Workbooks.Open Filename:= _ "C:\Documents and Settings\YUMIKO\My Documents\YYYY.xls" のようにファイル名を入れると開くことができました。 が、   Workbooks.Open Filename:= _ "C:\Documents and Settings\YUUKORON\My Documents\Range("F1").Value.xls" のように、アクティブシートの セルF1にファイル名を入れて、開きたいのですが、どうしても開くことができません。いろいろ調べて試しましたが、無理でした。 基本的にマクロで記録で作っている初心者です。 回答よろしくお願いします。

  • Sub Auto_Open() 実行されない

    Excel2003VBAについて教えてください。 あるBookから、VBAの”Workbooks.Open”で別のブックを開くように作ってあるのですが、開かれるBookのほうに”Sub Auto_Open()”で特定のシートをアクティブにするように作っています。 普通にBookを開くとSub Auto_Open()は実行されますが、”Workbooks.Open”では実行されません。 ”Workbooks.Open”で開いたときに、特定のシートがアクティブになればそれでよいのですが。 よろしくお願いします。

  • エクセル2000VBAでファイルを操作したい

    いつもお世話になっています。 エクセルVBAで別のワークブックを参照したいので workbooks.open Filename:="C:my documents\***.xls" とすると、そのオープンするワークブックのTisWorkbookのWorkbook_Open()で実行している(.show)メニュー(ユーザーフォーム)が開いてしまいます。 このとき、Workbook_Open()を実行させないでワークブックを開く方法って、 なにかありますか? Shiftを押しながらファイルを開くとき、実行されませんよね?それをVBAでできるのですか? よろしくお願いします。

  • WorkbookのCopyについて

    Workbookのコピーについて教えてください。 下記のマクロにセル内の数式もコピーしたいのですが、出来ないで困ってます。 値と数式をコピーする、マクロを入れると指定した範囲にコピーされません。 Sub CopyWorkbookToWorkbook() Windows("sheet2.xls").Activate Workbooks.Open Filename:="D:\book1.xls" Workbooks("book1.xls").Worksheets("sheet1").Range("A6:k1000").Copy Workbooks("book2.xls").Worksheets("sheet1").Range("A6").PasteSpecial    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False,Transpose:=False          Workbooks("book1.xls").Close End Sub よろしくお願いします。

  • Excel2003 マクロ(VBA) どこにあるか分からないフォルダAのワークブックAを開く

    いつもお世話になっております。 新しいマクロの記録でフォルダAのワークブックAを開きました。 ChDir "C:\フォルダA" Workbooks.Open Filename:= _ "C:\フォルダA\ワークシートA.xls" しかし、今はフォルダAがCドライブにありますが、 明日はデスクトップ上にあったり、フォルダBの中に入っていたりするかもしれません。 このような時、上記のようなVBAでは開けません。 どこにあるか分からないフォルダAのワークブックAを開くには どこをどのように直せばよろしいのでしょうか? 以上、よろしくお願いいたします。

  • Excel VBAで他のワークブックからのコピぺの仕方について

    Excel VBAで開いている全てのワークブックから決められたセルの中身とそのシート名をそれぞれ決められた一つのワークブックにコピぺする マクロを作りたいのですが、どうやって作って良いのかが分かりません。 例えば、 Sub Mac() For i = 1 To 100 Workbooks("Book1.xls").Worksheets("sheet1").Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Workbooks("Book1.xls").Worksheets("sheet1").Cells(13, 2) End Sub みたいにすれば良いと思うのですが、開いている全てのファイルからのコピぺってどうやって記述するのでしょうか? 何卒よろしくお願い致します。