こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

マクロ 別のブックを指定。

エクセルマクロで特定の文字を含んだファイルを指定したいのですが、
ファイル名がその都度、book1,book2,book3,のように変わります。
Range("a1").Select
Windows("Book10").Activate
Range("a10").Select
End Sub
このような記述だと、book10にしか指定できず、bookを含むファイルを指定したいのですが
どのようにしたらよろしいのでしょうか。
開いているbookを含むファイルは1ファイルのみです。

               宜しくお願いいたします。

投稿日時 - 2016-01-05 17:05:21

QNo.9106515

困ってます

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

>開いている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

投稿日時 - 2016-01-05 17:39:10

お礼

kagakusuki様
ご回答ありがとうございます。
思うとおりにできました。
たいへん助かりました。

投稿日時 - 2016-01-06 08:13:42

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

単純に調べて条件に合致するブックを対象にするのでは。

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は別物です。

投稿日時 - 2016-01-05 20:19:58

お礼

keithin様
ご回答ありがとうございます。

投稿日時 - 2016-01-06 08:36:34

-広告-

ANo.2

私、普段は「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」が含まれていれば、そのファイルを開いています。

投稿日時 - 2016-01-05 17:59:08

お礼

Prome_Lin様
ご回答ありがとうございます。
私には、ちよっと難しく感じましたが時間をかけて理解できるよう勉強します。

投稿日時 - 2016-01-06 08:23:54

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-