• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シート名と同じブックを開くVBA)

シート名と同じブックを開くVBA

このQ&Aのポイント
  • VBAを使用して、特定のフォルダ内にあるシート名と同じ名前を持つブックを開く方法について質問です。
  • 現在、「新しいフォルダ」というフォルダ内の「りんご」という名前のブックを開くことに成功しています。しかし、さらに応用して、アクティブワークブックのシート名と同じ名前を持つブックも開きたいです。
  • シート名は「りんご」だけでなく、「みかん」やその他いくつかの名前もあります。VBA初心者なので、なるべくコードを変更せずに実装する方法を教えてください。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

> 上記のようなパターンになる可能性は低いような気もしますが。 と思ったのですが、意外とありえそうなので 現在開いているかどうかを調べて開いていれば再度Dirで探す場合の一例です。 Dim flg As Boolean With ActiveWorkbook flg = False For i = 1 To .Sheets.Count 三色団子 = Dir(お茶 & "*" & .Sheets(i).Name & "*.xlsx") Do While 三色団子 <> "" For j = 1 To Workbooks.Count If Workbooks(j).Name = 三色団子 Then flg = True Exit For End If Next j If flg = True Then 三色団子 = Dir() Else Workbooks.Open Filename:=お茶 & 三色団子 Exit Do End If flg = False Loop Next i End With 開いてるファイルを調べずにDictionaryを使って開いたファイルの重複しない一覧を作って調べるという方法もあります。 Dictionaryの使い方は以下のサイトを参考にしてください。 【エクセルVBA】リスト処理に便利!Dictionaryオブジェクトをコードで使うための準備 https://tonari-it.com/excel-vba-dictionary-object/

levitooicompass
質問者

お礼

複数のパターンをご提示いただいてありがとうございます!こちら見たことがないコードもあり難解ですが、頑張って調べてみようと思います!

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

VBAを開始した時のアクティブワークブック ではなくて With ActiveWorkbook が実行されるときのアクティブワークブックでした。 また、ファイル名が一部重複する場合、あるパターンで同じファイルが選ばれます。 シート名が以下の順で並んでいて ab a ファイルが以下のようにあった場合 ab.xlsx abc.xlsx ab.xlsxしか開かないので、現在開いているかどうかを調べて開いていれば再度Dirで探す必要があります。上記のようなパターンになる可能性は低いような気もしますが。

levitooicompass
質問者

お礼

Dir関数で拡張子が3桁までしか見れないというのは聞いたことがありますが、ファイル名まで重複していると同じものとみなされるとは知らなかったです!ご教示いただいてありがとうございます!

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> SheetはActivesheetだけではなく、色々な名前のSheetがあるため、ActiveWorkbookの中のすべてのシート VBAを開始した時のアクティブワークブックのシート名を含むブックがあれば開く(シート数分)場合です。 SheetsとSheets(i)の前にドットがあります。 With ActiveWorkbook For i = 1 To .Sheets.Count 三色団子 = Dir(お茶 & "*" & .Sheets(i).Name & "*.xlsx") If 三色団子 <> "" Then Workbooks.Open Filename:=お茶 & 三色団子 End If Next End With

levitooicompass
質問者

お礼

丁寧にご回答いただいてありがとうございます!ご教示いただいた方法で入力したところ、うまくいきました!(^_^)また、当初うまくいかなかった原因がワイルドカードが漏れていたことによることもわかりました・・・!本当にありがとうございます!

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

アクティブワークブックのシート名は ActiveSheet.Name で取得できます。 同じ名前を含むは Like "*" & ActiveSheet.Name & "*" の結果で判断できます。

levitooicompass
質問者

補足

早速ご回答いただきありがとうございます!SheetはActivesheetだけではなく、色々な名前のSheetがあるため、ActiveWorkbookの中のすべてのシートにおいて、名前の一致するブックがあるかを調べたいと思っています!

関連するQ&A