こんにちは。
VBAで指定したキーワードで同じフォルダ内のExcelブックを開きたいのですが、
たとえば、ブック名に[みかん]というキーワードが入っている場合に、開く。
また、エクセルの拡張子はxlsxとxlsmの可能性があるので、下記コードで実現できると思いますが、
Workbooks.Open FileName:=ThisWorkbook.Path & "\" & Dir(ThisWorkbook.Path & "\" & "愛媛県みかん.xls*")
しかし、どうやってブック名に[みかん]というキーワードが入っている場合に、開けるようにしますか?
ご教示お願い致します。
No.6ベストアンサー
- 回答日時:
>複数の可能性がございません。
複数なければ、 #2の回答でもよろしいかと思います。
#3の返信
示されているソースコードは、マクロ実行ブックの親フォルダ内を探しているようですね。
あるかどうかを確認しているファイル名も違うので、、ちょっと分かりませんし本スレッドから
ずれますので、別スレッド(再質問)などをしてくださいね。
#4の追記
>ちなみに、シート1のA1セルへの入力なしで、VBAコードでキーワードを指定することができますでしょうか?
直接で良いなら、(#2の回答例)Tgt_BkName = "みかん"
でよろしいと思います。
No.4
- 回答日時:
>VBAコードでキーワードを指定することができますでしょうか?
意味が広すぎますね。
InputBoxからとか、算出結果からとか、、TextBoxからとか、、、
何からにしますか?
No.3
- 回答日時:
検証してみました。
ほんと抜け策です。すみません。
追加と変更が必要ですね。
変数を追加して、訂正するか、1行追加して是正するか、、、
後者が簡単ですが、やっつけ感があるので、しっかり変数を追加して対処します。
Dim keyword As String
訂正箇所(2行)
Tgt_BkName = Sheets(1).Range("A1") を keyword = Sheets(1).Range("A1")
If InStr(file.Name, Tgt_BkName) > 0 Then を If InStr(file.Name, keyword) > 0 Then
以上です。
ミスから出た機会ですが、#1、#2、#3の挙動の違いを考えてみてくださいね。
度々すみませんです。
お手数をおかけしまして申し訳ございません。
参考になりました。
ちなみに、下記コードは一個上のフォルダに保存しているブックに「みかん」というキーワードが入っていたら、それを開くものです。
どうやって改造して、本題に使用できるようになりますでしょうか?
Dim Filepath As String, FileName As String '一個↑のフォルダにブック名を「品番」をキーワードに指定し、ブックを開く
Dim TargetWorkbook As Workbook
Filepath = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\"
If Dir(Filepath & "*みかん.xlsx") = "" Then
MsgBox "ファイルは存在していません"
Exit Sub
End If
FileName = Dir(Filepath & "*品番.xlsx")
Workbooks.Open FileName:=Filepath & FileName
No.2
- 回答日時:
#1投稿した後気づきました、少し安直でした
文字が入って要る場合なら、これではだめですね。
また、おなじ名前のワードファイルが入っていても、正しく動作しませんね。
早速直したので、こちらを、、、各ソースコードについては、自己学習でお願いいたします。
先ずは、訂正します。
Sub OpenFiles_Folder()
Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
Dim Tgt_BkName As String, ExtensionName As String
Dim file As Variant
Tgt_BkName = Sheets(1).Range("A1") 'シートインデックス1(一番左のシート)のA1セルの値
On Error Resume Next '未検証の為(検証時外してください。問題ない場合は再設定)
For Each file In fso.GetFolder(ThisWorkbook.path).files 'フォルダ内の全ファイルについて処理
If InStr(file.Name, Tgt_BkName) > 0 Then 'ブック名にキーワードがあるか----
Tgt_BkName = fso.GetBaseName(file.Name)
ExtensionName = fso.GetExtensionName(file.Name)
If ExtensionName Like "xls*" Then
Workbooks.Open _
Filename:=ThisWorkbook.path & "\" & _
Dir(ThisWorkbook.path & "\" & Tgt_BkName & ".xls*") 'ファイルを開く
End If
End If
Next file
End Sub
ご回答ありがとうございます。
コードでやってみたところ、実現できました。
参考になりました。
感謝致します。
ちなみに、シート1のA1セルへの入力なしで、VBAコードでキーワードを指定することができますでしょうか?
No.1
- 回答日時:
こんにちは、
キーワードを変数に入れてみては?
変数名は任意名、 型はString
Dim Tgt_BkName As String
Tgt_BkName = Sheets(1).Range("A1") 'シートインデックス1(一番左のシート)のA1セルの値
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & Dir(ThisWorkbook.Path & "\" & Tgt_BkName & ".xls*")
となりますが、、、
開くブック名にみかんがある時に開くのであれば、、
Sub OpenFiles_Folder()
Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
Dim Tgt_BkName As String
Dim file As Variant
Tgt_BkName = Sheets(1).Range("A1") 'シートインデックス1(一番左のシート)のA1セルの値
On Error Resume Next '未検証の為(検証時外してください。問題ない場合は再設定)
For Each file In fso.GetFolder(ThisWorkbook.path).files 'フォルダ内の全ファイルについて処理
If InStr(file.Name, Tgt_BkName) > 0 Then 'ブック名にキーワードがあるか----
Workbooks.Open _
Filename:=ThisWorkbook.path & "\" & _
Dir(ThisWorkbook.path & "\" & Tgt_BkName & ".xls*") 'ファイルを開く
End If
Next file
End Sub
既に開いている場合などのエラー処理をしてください。
一応、 On Error Resume Next のみ入れました。
Sheets(1).Range("A1") = みかん
こんな感じでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
Excelの警告について
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルにおける,「ブック」...
-
Excel(2010)のフィルターが保...
-
エクセルで50行ごとに区切った...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで別ブックをバックグ...
-
Excelファイルをダブルクリック...
-
エクセルで参照しているデータ...
-
複数のセルをコピーし、別シー...
-
エクセル2013 すべてのにシート...
-
Excelのデータが重くて開けない
-
エクセルでウィンドウの枠固定...
-
VBA: ブックをアクティベイトで...
-
エクセルで開いていないbookの...
-
Excelで拡張子の後に数字が……何...
-
ブックのピボットを別ブックに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
Excelの警告について
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルにおける,「ブック」...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
【マクロ】【VBA】別ブックへの...
-
Excel(2010)のフィルターが保...
-
Excelでブックの共有を掛けると...
-
エクセルで50行ごとに区切った...
-
エクセルでウィンドウの枠固定...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
VBAでブック保護非保護を判定す...
-
【マクロ】for nest について ...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
おすすめ情報
ご回答ありがとうございます。
コードでやってみたところ、実現できました。
参考になりました。
感謝致します。
ちなみに、シート1のA1セルへの入力なしで、VBAコードでキーワードを指定することができますでしょうか?
ご回答ありがとうございます。
シンプルに考えると、
たとえば、同じフォルダ内にみかん123というブックが存在されていて、
ブック名に「みかん」というキーワードが入っている場合に、それを開くっていうことです。
複数の可能性がございません。
ご教示お願い致します。
これは一個上のフォルダにブック名にみかんががある場合にブックを開くコードですが、
どうやって同じフォルダ内のブックを開けるように改造したらよろしいでしょうか?
Dim Filepath As String, FileName As String
Dim TargetWorkbook As Workbook
Filepath = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1) & "\"
If Dir(Filepath & "*みかん.xlsx") = "" Then
MsgBox "ファイルは存在していません"
Exit Sub
End If
FileName = Dir(Filepath & "*みかん.xlsx")
Workbooks.Open FileName:=Filepath & FileName