- ベストアンサー
マクロ 別のブックを指定。
エクセルマクロで特定の文字を含んだファイルを指定したいのですが、 ファイル名がその都度、book1,book2,book3,のように変わります。 Range("a1").Select Windows("Book10").Activate Range("a10").Select End Sub このような記述だと、book10にしか指定できず、bookを含むファイルを指定したいのですが どのようにしたらよろしいのでしょうか。 開いているbookを含むファイルは1ファイルのみです。 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>開いているbookを含むファイルは1ファイルのみです。 という条件なのでしたら、 Sub QNo9106515_マクロ_別のブックを指定() Dim wb As Workbook For Each wb In Workbooks If wb.Name Like "Book*" Then wb.Activate Exit For End If Next wb Range("A10").Select End Sub 或いは、 Sub QNo9106515_マクロ_別のブックを指定2() Dim wb As Workbook, myBookName As String For Each wb In Workbooks myBookName = wb.Name If myBookName Like "Book*" Then Exit For Next wb Windows(myBookName).Activate Range("A10").Select End Sub
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
単純に調べて条件に合致するブックを対象にするのでは。 sub macro1() dim w as workbook for each w in workbooks if w.name like "*Book*.*" then w.windows(1).activate w.range("A10").select end if next end sub #幾つか突っ込みどころ マクロを使ってファイルとか操作するときは,「必ず」拡張子まで含めます。 「開いてるブックやファイル」はアドインとか個人用マクロブックとか,1つ+1つとは限りません。 >特定の文字を含んだファイルを指定したい マクロの書きぶりによってはbook1とBook1は別物です。
お礼
keithin様 ご回答ありがとうございます。
- Prome_Lin
- ベストアンサー率42% (201/470)
私、普段は「VBScript」でプログラムを書いていますので、その発想からの回答になりますが、「VBA」で動作を確認しております。 Sub Test() Dim o, p, s As Object Dim n Set s = CreateObject("Scripting.FileSystemObject") Set p = s.GetFolder(".") For Each n In p.Files If LCase(s.GetExtensionName(n.Name)) = "xlsx" And InStr(n.Name, "Book") > 0 Then Set o = Workbooks.Open(p & "\" & n.Name) MsgBox ("Yes") o.Close End If Next End Sub Set s = CreateObject("Scripting.FileSystemObject") は、フォルダなどを扱えるようにしています。 VBAでは、p = ActibeWorkbook.Pathで、 自分自身がいるフォルダを文字列として「p」に格納できますが、 「For Each n In p.Files」の「p」には使えません。 この「p」は文字列ではなく、オブジェクトです。 「For Each n In p.Files」は、「p」フォルダ内のファイルを順番に調べてゆきます。 「LCase()」は文字をすべて小文字にし、「GetExtensionName」は拡張子を調べています。 「InStr」で順番に調べているファイル名「n.Name」の中に「Book」が含まれていれば、値が「1」以上になります。 拡張子が「xlsx」で、ファイル名に「Book」が含まれていれば、そのファイルを開いています。
お礼
Prome_Lin様 ご回答ありがとうございます。 私には、ちよっと難しく感じましたが時間をかけて理解できるよう勉強します。
お礼
kagakusuki様 ご回答ありがとうございます。 思うとおりにできました。 たいへん助かりました。