• 締切済み

アクティブのブックのインデックスを知るプロパティ

アクティブのブックをインデックスを取得する方法が知りたいのですが、 シートの activesheet.index のような、アクティブブックのインデックス番号を知ることができるプロパティはないでしょうか? 次のようなマクロを使って取得する方法は思いついたのですが、できればプロパティなど簡潔な文で 取得したいのです。 Public Sub tset() Dim i, s For i = 1 To Workbooks.Count If Workbooks(i).Name = ActiveWorkbook.Name Then s = i Next MsgBox s End Sub

みんなの回答

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  下記のコードを試してみてください。 Sub DisplayTabNumber() Dim strSheetName As String strSheetName = ActiveSheet.Name MsgBox "シート見出し番号: " & Sheets(strSheetName).Index End Sub では。

iori16
質問者

補足

例がシートのインデックスだったので誤解させてしまったかもしれませんが 私が知りたいのは、ブックのインデックスです。シートのインデックスではありません

関連するQ&A

  • エクセルマクロでブック名を検索できない

    エクセルマクロで今開いているブック以外のブック名を取得して編集するマクロを作っていますが、一度他のブックを開かずにエラーメッセージ"価格を検索したいブックを開いて下さい。"を表示させると以降開いたブック名を取得出来ません。 For Each wb In Application.Workbooks s = wb.Name If s <> ActiveWorkbook.Name Then Exit For Else MsgBox "価格を検索したいブックを開いて下さい。" Exit Sub End If Next オブジェクトの解放など調べてみたのですが、初心者でよく解らず困っています。どなたか教えて下さい。

  • インデックスが有効範囲にありませんと出てしまう

    VBAで"実行時エラー9 インデックスが有効範囲にありません"と出てしまいます、解決方法を教えていただけないでしょうか? 以下のVBAで上記のエラーが出てしまいます。ちなみに私はVBA初心者です。 VBAの内容としてはとあるブックのシートを丸ごと、そのシートを必要とするブックのシートに貼り付けるというものです。 Sub コピー() Dim ファイル名, 基本ファイル名 Dim i, j As String i = ActiveWorkbook.Name j = ActiveSheet.Name Application.DisplayAlerts = False 基本ファイル名 = Sheets("データリスト").Range("B14").Value →ここでエラー発生 Workbooks.Open 基本ファイル名 If Err.Number > 0 Then MsgBox "『○○』を開けませんでした" & vbCrLf & _ "ファイル名が間違っているか、存在しないか、拡張子が違います" & vbCrLf & vbCrLf & _フォルダ & " に " & vbCrLf & _ 基本ファイル名 & "ファイルがありません" Exit Sub End If Worksheets("リスト").Range("A1:N400").Copy Workbooks(i).Worksheets("リスト").Range("A1:N400").PasteSpecial Workbooks(基本ファイル名).Close SaveChanges:=False →ここでもエラーが出てしまうことがある Sheets(j).Select Application.DisplayAlerts = True MsgBox ("リストを取り込みました") End Sub

  • ExcelのVBAでブックの保存

    ExcelのVBAでブックを追加し保存を行っています。 その際、保存は、どこに行うのがよいのですか bookですか。sheetですか。 両方で、SaveAsができまが、使い分けがあるのでしょうか。 どのように使い分けするのでしょうか。 Workbooks.Add ActiveSheet.Name = "サンプル" ActiveSheet.SaveAs OutFileName ActiveWorkbook.SaveAs OutFileName ActiveWorkbook.Close

  • 保護されたブックのコピーについて

    現在、ボタンを押すと新規ブックが作成され、最初のブックのシートをコピーするというマクロを組みました。 しかし、元になるブックにはブックの保護とシートの保護を両方かけていて、途中でエラーになるはずなのですが、何故かそうならずに普通に新規ブックにコピーがされます。 上手くいったのですがエラーが出ると予想していたので気持ちが悪く、また個人だけで使うわけじゃないので原因を知っておきたいです。 どなたかよろしくお願いします。 Private Sub makeBookButton_Click() Dim myWorkBook As String Dim newWorkBook As String Dim mySheet As Worksheet Application.ScreenUpdating = False On Error GoTo ErrTrap Application.DisplayAlerts = False myWorkBook = ThisWorkbook.Name Workbooks.Add ActiveWorkbook.SaveAs Filename:=NEWBOOK newWorkBook = ActiveWorkbook.Name Workbooks(myWorkBook).Activate For Each mySheet In ThisWorkbook.Worksheets Workbooks(myWorkBook).Sheets(mySheet.Name).copy after:=Workbooks(newWorkBook).Sheets(Workbooks(newWorkBook).Sheets.Count) Next Workbooks(NEWBOOK).Sheets("Sheet1").Delete Workbooks(NEWBOOK).Sheets("Sheet2").Delete Workbooks(NEWBOOK).Sheets("Sheet3").Delete Application.DisplayAlerts = True Application.ScreenUpdating = True Exit Sub ErrTrap: Call MsgBox("ブック作成時にエラーが発生しました。", vbCritical) End Sub

  • オブジェクト変数にブックを格納するには?

    vbaで新規にブックを立ち上げて、そのブックの位置を指定したのですが Sub Sample1() Dim w As Workbook Workbooks.Add w = ActiveWorkbook.Name w.Top = 0 w.Left = 0 End Sub これだとエラーになります。 w = ActiveWorkbook.Name これでは新規ブックを変数に格納できないようです。 w = ActiveWorkbook だけでもダメでした。 どうすればよいでしょうか? よろしくお願いします。

  • 自身のブック名を変更したい

    こんばんは。 Sub test() ActiveWorkbook.Name = "変更後ブック名.xls" End Sub とすると 「.Name =」の部分が コンパイルエラーになります。 (値の取得のみ可能なプロパティに値を設定することはできません。) 現在開いているブックの名前を変更するコードを教えてください。 ご教授よろしくお願い致します。

  • 「 VBA の 宣言 」 がない場合の問題点は ?

    下記例で、 「 宣言 」 なしでも、現在のところ、問題は発生してませんが、 今後、「 宣言 」 がなかった場合の 「 問題点の例 」 を教えて下さいませ。 ------------------------------- Sub ブックA*の全シートをコピー() Dim Wb As Workbook '宣言 For Each Wb In Workbooks If Wb.Name Like "ブックA*.xls" Then With Workbooks("ブックB.xls") Wb.Worksheets _ .Copy after:=.Sheets(.Sheets.Count) End With End If Next Worksheets(Worksheets.Count).Activate MsgBox ActiveSheet.Index Worksheets("Sheet1").Select End Sub

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

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

  • VBAで複数シートを新たに作成したBookにコピー

    いつも大変お世話になります。動作環境は、WindowXPSP3、EXCEL2010です。10個の名前付きsheetがあります。Book.xlsmから新たにBook1.xlsxを作成してこのBook1.xlsxに1個のsheet名が「sheet1」を作成します。そして、Book.xlsmにある10個の名前付きsheetをBook1.xlsxに作成した一個のsheet1にコピーします。コピーの仕方は、Book.xlsmの一番左端のsheetから順番にBook1.xlsxに作成した1個のsheet1に下から上に向かってコピーしていきます。最終的には、10個の名前付きsheetが纏められます。後一つの条件は、一番最初にコピーするシートには4行目に項目書かれております。なので、一番最初にコピー4行目だけはコピーして、後は、5行目からコピーしたく、下記のマクロを作成しました。 Option Explicit Option Base 1 Public Sub シートの纏め() Dim i As Long Dim mySheetCnt As Long Dim mySheetName() As String Dim ws As Workbook Dim s As Worksheet '========================================================================== mySheetCnt = ThisWorkbook.Sheets.count ReDim mySheetName(1 To mySheetCnt) For i = 1 To mySheetCnt - 3 mySheetName(i) = Sheets(i).Name 'MsgBox "変数mySheetName(" & i & ")=" & mySheetName(i) Next i '========================================================================== Dim EffectiveRow As Long Dim EffectiveColumn As Long EffectiveRow = Range("B65536").End(xlUp).Row 'MsgBox "EffectiveRow = " & EffectiveRow & "" EffectiveColumn = Cells(4, 256).End(xlToLeft).Column 'MsgBox "EffectiveColumn = " & EffectiveColumn & "" '========================================================================== Dim Book1 As Workbook For i = 1 To mySheetCnt - 3 If mySheetCnt = 11 Then GoTo Label1 'MsgBox "mySheetName(i) = " & mySheetName(i) & "" 'MsgBox "デフォルトで" & Application.SheetsInNewWorkbook & "枚作成されます" Workbooks.Add Application.SheetsInNewWorkbook = 1 Sheets("sheet1").Select Book1 = ActiveWorkbook.Name Workbooks("Bookxlsm").Worksheets("mySheetName(i)").Range("B4:AF58").Copy _   Workbooks("Book1.xls").Worksheets("sheet1").Range("B4") ⇐ここで、実行時エラーが出ます。 Next i Label1: End Sub しかし、実行時エラーで止まってしまいます。もう、1週間格闘しております。どなたか、何卒ご教授して頂きたく、宜しくお願い申し上げます。

  • Activeブック以外の開いているブックを閉じたい

    複数のbookが開いている状態で、 Activebook以外のworkbookを閉じたいです。 book名、book数は一定ではありません。 こんなことをしてみたのですが動かないです。 何かよい方法はないでしょうか。 Dim hbook As Object 名前 = ActiveWorkbook.Name For Each hbook In Workbooks If hbook.Name <> 名前 Then Workbooks(hbook & ".xls").Close ' False End If Next

専門家に質問してみよう