ワークブック名の一覧表を表示する方法とは?

このQ&Aのポイント
  • Wedで見つけた方法を使用して、アクティブなブックのシート名を一覧から選択することができます。ただし、現在開いているエクセルファイルの一覧を表示する方法はわかりません。
  • 現在開いているエクセルファイルの一覧を表示する方法が知りたいです。アクティブなブックのシート名を一覧から選択する方法はすでにわかりました。
  • ユーザーが任意のブック(エクセルのみ)・シートを選択し、それらの名前を取得する方法を知りたいです。現在編集中のシートの内容をコピーペースト先として利用したいです。
回答を見る
  • ベストアンサー

ワークブック名の一覧表

Wedで見つけた下記の方法では、アクティブなブックのシート名を一覧から選択する事が出来ます。 これと同じ様に、現在開いているエクセルファイルの一覧を表示するにはどの様にすればいいのでしょうか? Sub select_sheet() Dim sheet_name As Variant MsgBox "シートを選択してください。" Do CommandBars("workbook tabs").ShowPopup sheet_name = Application.InputBox("このシートで良いですか?", , ActiveSheet.Name) Loop Until sheet_name <> False MsgBox sheet_name End Sub 使用目的としては現在編集中のシートの内容をユーザーが任意のブック(エクセルのみ)・シートを選択し、それらから.nameを取得して編集内容のコピーペースト先を得ようと考えています。 宜しくお願い致します。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

ExcelのプロセスはApplicationです。 この中には現在開いているブックのコレクションとしてWorkbooksが あります。このコレクションからインデックス、またはブック名を 指定して、Workbookオブジェクトを特定します。 For Each book In Workbooks   name = book.Name Next または For I = 1 To Workbooks.Count   name = Workbooks(I).Name Next 蛇足ですが、WorkbookオブジェクトにはWorkSheetsコレクションが あり、同じような方法でWorkSheetオブジェクトを特定できます。 尚、Excelマクロ内ではApplicationを省略できます。他のVBAから ActiveXで使う時はApplication.Workbooksのように省略できません。

ae-1sp
質問者

お礼

成るほど、この方法ならブックとシートのオブジェクト名両方を特定できるのですね。 ありがとうございます。 お礼が遅くなり申し訳ありませんでした。

関連するQ&A

  • ExcelのVBAで、application.inputboxで、開いている他のブックを選択できません。

    いつもお世話になっております。 ExcelのVBAで、application.inputboxで他のブックを選択したいのですが、どうも出来ません。下記のコードを実行して、InputBoxで、他のブックのセルを指定したいのですが、どうも現在開いている他のブックをマウスでクリック出来ないのです。 下記のコードは、『選択範囲を、InputBoxで指定した先にコピーしたい』という意図から、まずは、Msgboxに表示してみることにしたものです。 これは、何故なのでしょうか? ご教示下さい。 'rngOriginalを、rngCopyToにコピーします。 Sub Test() Dim rngOriginal As Range Dim rngCopyTo As Range Set rngOriginal = Selection.Cells  Set rngCopyTo = Application.InputBox("コピー先を選択してください", , , , , , , 8) With rngOriginal MsgBox .Parent.Parent.Name & " " & .Parent.Name & "!" & .Address(, , Application.ReferenceStyle) End With With rngCopyTo MsgBox .Parent.Parent.Name & " " & .Parent.Name & "!" & .Address(, , Application.ReferenceStyle) End With End Sub

  • EXCEL VBA におけるブック終了後の値の保存方法について

    EXCEL VBAについて質問があります。もしかしたら初歩的なことかもしれませんがよろしくお願いいたします。 まず、 Sub Test() Dim i As String i = InputBox("好きな果物を入力してください") Sheets("Sheet1").Range("A1").Value = i End Sub を実行し、ブックを保存して終了する。 ブックを開く Private Sub Workbook_Open() Dim k As String k = Sheets("Sheet1").Range("A1").Value If k = "みかん" Then MsgBox ("a") Else: MsgBox ("b") End If End Sub この処理を Sheets("Sheet1").Range("A1").Value = i というシート上のセルに値を保存するという方法を取らずに iの値をブック終了後もプロシージャ内に持っておくというのは可能なのでしょうか。 Publicで宣言してもブックを一度閉じると やっぱりiの値は保存されませんでした。 どうぞよろしくお願いいたします。

  • エクセルでシート名の一覧をプリントするには?

    エクセルのブック内にシートを30程作っています。 シート名称だけを一覧でプリントする方法があれば教えて下さい。 どうぞ宜しくお願いします。

  • エクセル2007で自前のツールバーを作る方法

    エクセル2000です。 以下のマクロで自前の新しいツールバーが作れ、作動します。 ところがエクセル2007ではうんともすんとも言ってくれません。 エクセル2007で使う場合はどのようにしたらよいでしょうか? ユーザーフォームで似たようなものを作る方法はわかるのですが、できれば以下の方法を使いたいのです。 Sub 三択メニュー() On Error Resume Next Application.CommandBars("選択します").Delete On Error GoTo 0 Application.CommandBars.Add Name:="選択します", Position:=msoBarFloating With Application.CommandBars("選択します") .Visible = True .Controls.Add Type:=msoControlButton With .Controls(1) .Style = msoButtonCaption .Caption = "⇒メニュー1 " .OnAction = "Msg_1" End With .Controls.Add Type:=msoControlButton With .Controls(2) .Style = msoButtonCaption .Caption = "⇒メニュー2 " .OnAction = "Msg_2" End With .Controls.Add Type:=msoControlButton With .Controls(3) .Style = msoButtonCaption .Caption = "⇒メニュー3 " .OnAction = "Msg_3" End With End With End Sub Sub Msg_1() Application.CommandBars("選択します").Delete MsgBox "追加コマンド1を処理しました。" End Sub Sub Msg_2() Application.CommandBars("選択します").Delete MsgBox "追加コマンド2を処理しました。" End Sub Sub Msg_3() Application.CommandBars("選択します").Delete MsgBox "追加コマンド3を処理しました。" End Sub

  • 今発生しているイベントのコントロール名を取得

    エクセルです 例えば、シートにコマンドボタンを一つ設置して、クリックイベントで Private Sub CommandButton1_Click() MsgBox "CommandButton1が押されました" End Sub こうしたら、コマンドボタン1を押した時に、 "CommandButton1が押されました"が表示されますが、 CommandButton1の部分を変数みたいなのにすることはできますか? MsgBox Me.Name & "が押されました" だとシート名が取得されるし MsgBox Me.Control.Name & "が押されました" や MsgBox Me.ActionControl.Name & "が押されました" だとエラーになります。

  • エクセルのマクロ イベントプロシージャについて

    エクセルのマクロについて教えて下さい 今 book1を開いたら動くマクロを組んでいます 「Private Sub Workbook_Open()」を 使って 内容は この中で別のブック(仮にbook100とします) を開いてその中のデータ (すでに選択してあります) をコピーして book1に貼り付けて book100を閉じる。 という作業なのですが book100を選択しようとするとエラーが起きてしまいます。 Private Sub Workbook_Open() の中では違うブックに対して 作業ができないようになっているのでしょうか? よかったら御教授ください

  • Excel2003でブックごとにコピー&ペースト不可の制限

    過去の記事なども調べ 下記でアプリケーション単位での設定はわかりました。 しかし全ブックに影響がでるのはこまるのでこれをブック単位に設定することはできますでしょうか。 お願いします! ▽ソース Sub Auto_Open() Call DisEnableKeys1 Call DisEnableKeys2 End Sub Sub DisEnableKeys1() Dim eFlg As Boolean eFlg = False 'サブルーチンにしてトグルも可能 With Workbook .CommandBars("Worksheet Menu Bar").Controls("編集(&E)").Controls("貼り付け(&P)").Enabled = eFlg .CommandBars("Cell").FindControl(, 22).Enabled = eFlg If eFlg = False Then .OnKey "^v", "DummyMacro1" Else .OnKey "^v" End If End With End Sub Sub DisEnableKeys2() Dim eFlg As Boolean eFlg = False 'サブルーチンにしてトグルも可能 With Workbook .CommandBars("Worksheet Menu Bar").Controls("編集(&E)").Controls("コピー(&C)").Enabled = eFlg .CommandBars("Cell").FindControl(, 19).Enabled = eFlg If eFlg = False Then .OnKey "^c", "DummyMacro2" Else .OnKey "^c" End If End With End Sub Sub DummyMacro1() MsgBox "貼り付けは禁止されています。", vbInformation End Sub Sub DummyMacro2() MsgBox "コピーは禁止されています。", vbInformation End Sub

  • ブックのすべてのシート名を取得するコード

    何が間違いなんでしょうか? エクセル2003です。 ブックのすべてのシート名を取得するコードを考えてるのですが なぜか一番左のシート名しか取得できません。 コードは↓です。 ----------------------------------- Sub test01() Dim x As Workbook For Each x In Workbooks Debug.Print ActiveSheet.Name Next End Sub ----------------------------------- できないので「Workbooks」の部分を「ThisWorkbook」に変えてみたところ 実行時エラーになってしまいました。 ご教授よろしくお願いします。

  • Excel VBAを使って、Excelデータを別のExcelファイルに取り込みします

    報告書にexcel VBAを使って、(報告書を開いたまま)報告書のデータを別のexcelファイル(一覧)に取り込みします。 Sub k() Dim ブック As Workbook Set ブック = Workbooks.Open("c:\テスト\" & "一覧.xls") ブック.Worksheets("Sheet1").Cells(3, 2) = Worksheets("企業情報シート").Cells(3, 3) End Sub 報告書の"Worksheets("企業情報シート").Cells(3, 3)"は書き方がおかしいみたいで、正しい書き方を教えてください。

  • 保存してもワークブック&シートが消えています(Excel)

    プログラミング初心者です。今DelphiでExcelを操作するプログラムを作成しており、Serversコンポーネントを使わずにOLEオブジェクトを使って操作しています。DelPhi側でExcelを起動させて、既存のファイルにDelPhiで取り出したSQLのデータをExcelに表示させるというものですが、データを上書き保存してもExcelのブックが消えていているようで、保存したxlsを起動させてもブック及びシートが表示されません。但し印刷プレビューには保存していたデータがプレビューされます。 原因が分からないので、申し訳ありませんがよろしくお願いします。 書いたプログラム↓ (uses節にComObj,Excel2000があります。) Var Excel,WorkBook,WorkSheet: Variant; ... ... Excel := CreateOleObject('Excel Application'); WorkBook := Excel.WorkBooks.Open(FileName := 'C:\@@@.xls',ReadOnly := False); WorkSheet := WorkBook.Wordsheets[1]; WorkSheet.Name := '@@@'; ... ...(以下Record取得の表記など) Excel.Visible := True; (Recordを取得し、値をCellにセットしてからVisibleをTrueにしています。) ... 大変読みにくくて申し訳ありませんがよろしくお願いします。環境はDelphi7,Excel2000,SQLServer2000です。

専門家に質問してみよう