Excel VBA 質問スレッド №1490 (解決済)
複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/18(Tue) 12:23:28 OS : Windows 10 EXCEL : Excel 2019
------------------------------------------------------------------------------------------------------------------------------------------------------------
上記でTESTファイルの中にあるブックの中から●●●と一致する値を取り出せた(マクロファイルがデスクトップにある状態)のですが、マクロファイルをTESTファイルに格納しマクロを実行したところ、値が抽出できません。抽出するためにはどのようにしたらよいでしょうか。どなたかご教授いただけますと幸いです。。
Sub ●●●1() Range("A2:F1000").Clear Dim A A = Dir(ThisWorkbook.Path & "\TEST\*") j = 1 Do While A <> "" Workbooks.Open ThisWorkbook.Path & "\TEST\" & A With ActiveWorkbook.Sheets(2) For i = 2 To .Cells(Rows.Count, "C").End(xlUp).Row If .Cells(i, "C") = "●●●" Then j = j + 1 ThisWorkbook.Sheets(3).Cells(j, "A").Resize(, 6) = .Cells(i, "A").Resize(, 6).Value End If Next End With ActiveWorkbook.Close False A = Dir() Loop End Sub
------------------------------------------------------------------------------------------------------------------------------------------------------------
上記でTESTファイルの中にあるブックの中から●●●と一致する値を取り出せた(マクロファイルがデスクトップにある状態)のですが、マクロファイルをTESTファイルに格納しマクロを実行したところ、値が抽出できません。抽出するためにはどのようにしたらよいでしょうか。どなたかご教授いただけますと幸いです。。
スポンサーリンク
[返信 1] Re : 複数ブックから一致したい値を取り出したい
投稿者 : さんこう 投稿日時 : 2023/07/18(Tue) 12:37:02
>TESTファイルの中にあるブックの中から
ファイルにブックを入れる方法を知らないのですが、どうやったのですか?
>マクロファイルをTESTファイルに格納しマクロを実行したところ
ファイルをファイルに格納する方法を知らないのですが、どうやったのですか?
>値が抽出できません。
抽出とはどういう操作ですか?「取り出し」とは違うのですか?
「できない」とは、どのような現象ですか?
(空白のままとかエラーが出るとか)
>TESTファイルの中にあるブックの中から
ファイルにブックを入れる方法を知らないのですが、どうやったのですか?
>マクロファイルをTESTファイルに格納しマクロを実行したところ
ファイルをファイルに格納する方法を知らないのですが、どうやったのですか?
>値が抽出できません。
抽出とはどういう操作ですか?「取り出し」とは違うのですか?
「できない」とは、どのような現象ですか?
(空白のままとかエラーが出るとか)
[返信 2] Re : 複数ブックから一致したい値を取り出したい
投稿者 : 通行人 投稿日時 : 2023/07/19(Wed) 05:48:16
TESTファイル というのが TESTフォルダ(…\Desktop\TEST)の間違いとして、「実行時エラー '1004'」とか出てないの?
マクロブックを TESTフォルダへ移動(…\Desktop ➡ …\Desktop\TEST)してしまったのなら、
データブックも TESTフォルダ内のTESTフォルダへ移動(…\Desktop\TEST ➡ …\Desktop\TEST\TEST)したのか疑問。
TESTファイル というのが TESTフォルダ(…\Desktop\TEST)の間違いとして、「実行時エラー '1004'」とか出てないの?
マクロブックを TESTフォルダへ移動(…\Desktop ➡ …\Desktop\TEST)してしまったのなら、
データブックも TESTフォルダ内のTESTフォルダへ移動(…\Desktop\TEST ➡ …\Desktop\TEST\TEST)したのか疑問。
[返信 3] Re : 複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/19(Wed) 09:00:04
さんこう様
返信ありがとうございます。説明が下手で申し訳ございませんでした。
上記でTESTファイルの中にあるブック(xlsx)の中から●●●と一致する値を取り出せた(マクロ有効ブック(xlsm)がデスクトップにある状態)のですが、
マクロ有効ブック(xlsm)をTESTファイルに移動しマクロを実行したところ、値を取り出すことができませんでした。エラーは出ず空白のままの状態です。
こちらで伝わりますでしょうか、よろしくお願いいたします。
■[返信 1] さんこうさん(2023-07-18 12:37:02)の記事
> >TESTファイルの中にあるブックの中から
>
> ファイルにブックを入れる方法を知らないのですが、どうやったのですか?
>
> >マクロファイルをTESTファイルに格納しマクロを実行したところ
>
> ファイルをファイルに格納する方法を知らないのですが、どうやったのですか?
>
> >値が抽出できません。
>
> 抽出とはどういう操作ですか?「取り出し」とは違うのですか?
>
> 「できない」とは、どのような現象ですか?
> (空白のままとかエラーが出るとか)
さんこう様
返信ありがとうございます。説明が下手で申し訳ございませんでした。
上記でTESTファイルの中にあるブック(xlsx)の中から●●●と一致する値を取り出せた(マクロ有効ブック(xlsm)がデスクトップにある状態)のですが、
マクロ有効ブック(xlsm)をTESTファイルに移動しマクロを実行したところ、値を取り出すことができませんでした。エラーは出ず空白のままの状態です。
こちらで伝わりますでしょうか、よろしくお願いいたします。
■[返信 1] さんこうさん(2023-07-18 12:37:02)の記事
> >TESTファイルの中にあるブックの中から
>
> ファイルにブックを入れる方法を知らないのですが、どうやったのですか?
>
> >マクロファイルをTESTファイルに格納しマクロを実行したところ
>
> ファイルをファイルに格納する方法を知らないのですが、どうやったのですか?
>
> >値が抽出できません。
>
> 抽出とはどういう操作ですか?「取り出し」とは違うのですか?
>
> 「できない」とは、どのような現象ですか?
> (空白のままとかエラーが出るとか)
[返信 4] Re : 複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/19(Wed) 09:04:41
通行人様
返信ありがとうございます。説明が下手で申し訳ございませんでした。
上記でTESTフォルダの中にあるブック(xlsx)の中から●●●と一致する値を取り出せた(マクロ有効ブック(xlsm)がデスクトップにある状態)のですが、
マクロ有効ブック(xlsm)をTESTフォルダに移動しマクロを実行したところ、値を取り出すことができませんでした。エラーは出ず空白のままの状態です。
TESTフォルダには大元のデータがそのまま入っています。
こちらで伝わりますでしょうか、よろしくお願いいたします。
■[返信 2] 通行人さん(2023-07-19 05:48:16)の記事
> TESTファイル というのが TESTフォルダ(…\Desktop\TEST)の間違いとして、「実行時エラー '1004'」とか出てないの?
>
> マクロブックを TESTフォルダへ移動(…\Desktop ➡ …\Desktop\TEST)してしまったのなら、
> データブックも TESTフォルダ内のTESTフォルダへ移動(…\Desktop\TEST ➡ …\Desktop\TEST\TEST)したのか疑問。
>
通行人様
返信ありがとうございます。説明が下手で申し訳ございませんでした。
上記でTESTフォルダの中にあるブック(xlsx)の中から●●●と一致する値を取り出せた(マクロ有効ブック(xlsm)がデスクトップにある状態)のですが、
マクロ有効ブック(xlsm)をTESTフォルダに移動しマクロを実行したところ、値を取り出すことができませんでした。エラーは出ず空白のままの状態です。
TESTフォルダには大元のデータがそのまま入っています。
こちらで伝わりますでしょうか、よろしくお願いいたします。
■[返信 2] 通行人さん(2023-07-19 05:48:16)の記事
> TESTファイル というのが TESTフォルダ(…\Desktop\TEST)の間違いとして、「実行時エラー '1004'」とか出てないの?
>
> マクロブックを TESTフォルダへ移動(…\Desktop ➡ …\Desktop\TEST)してしまったのなら、
> データブックも TESTフォルダ内のTESTフォルダへ移動(…\Desktop\TEST ➡ …\Desktop\TEST\TEST)したのか疑問。
>
[返信 5] Re : 複数ブックから一致したい値を取り出したい
投稿者 : さんこう 投稿日時 : 2023/07/19(Wed) 09:20:28
>こちらで伝わりますでしょうか
たいして変わっていないようですが、「TESTファイル」ではなく「TESTフォルダ」ということであれば。
> A = Dir(ThisWorkbook.Path & "¥TEST¥*")
> Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
これら↑の「ThisWorkbook.Path」には「¥TEST」が含まれることになりますので、追加している「¥TEST」が余分になります。
Dir関数は、フォルダやファイルが存在しないときは「""」を返すので、「Do While A <> ""」のループに入らず終了してしまいます。
>こちらで伝わりますでしょうか
たいして変わっていないようですが、「TESTファイル」ではなく「TESTフォルダ」ということであれば。
> A = Dir(ThisWorkbook.Path & "¥TEST¥*")
> Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
これら↑の「ThisWorkbook.Path」には「¥TEST」が含まれることになりますので、追加している「¥TEST」が余分になります。
Dir関数は、フォルダやファイルが存在しないときは「""」を返すので、「Do While A <> ""」のループに入らず終了してしまいます。
[返信 6] Re : 複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/19(Wed) 10:17:51
さんこう様
ありがとうございます。
> > A = Dir(ThisWorkbook.Path & "¥TEST¥*")
> > Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
>
> これら↑の「ThisWorkbook.Path」には「¥TEST」が含まれることになりますので、追加している「¥TEST」が余分になります。
こちら余分なのは理解できましたが、コードの書き換えがうまくいきません。お手数ですが詳細をお伺いしてもよろしいでしょうか。
■[返信 5] さんこうさん(2023-07-19 09:20:28)の記事
> >こちらで伝わりますでしょうか
>
> たいして変わっていないようですが、「TESTファイル」ではなく「TESTフォルダ」ということであれば。
>
>
> > A = Dir(ThisWorkbook.Path & "¥TEST¥*")
> > Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
>
> これら↑の「ThisWorkbook.Path」には「¥TEST」が含まれることになりますので、追加している「¥TEST」が余分になります。
>
> Dir関数は、フォルダやファイルが存在しないときは「""」を返すので、「Do While A <> ""」のループに入らず終了してしまいます。
>
さんこう様
ありがとうございます。
> > A = Dir(ThisWorkbook.Path & "¥TEST¥*")
> > Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
>
> これら↑の「ThisWorkbook.Path」には「¥TEST」が含まれることになりますので、追加している「¥TEST」が余分になります。
こちら余分なのは理解できましたが、コードの書き換えがうまくいきません。お手数ですが詳細をお伺いしてもよろしいでしょうか。
■[返信 5] さんこうさん(2023-07-19 09:20:28)の記事
> >こちらで伝わりますでしょうか
>
> たいして変わっていないようですが、「TESTファイル」ではなく「TESTフォルダ」ということであれば。
>
>
> > A = Dir(ThisWorkbook.Path & "¥TEST¥*")
> > Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
>
> これら↑の「ThisWorkbook.Path」には「¥TEST」が含まれることになりますので、追加している「¥TEST」が余分になります。
>
> Dir関数は、フォルダやファイルが存在しないときは「""」を返すので、「Do While A <> ""」のループに入らず終了してしまいます。
>
[返信 7] Re : 複数ブックから一致したい値を取り出したい
投稿者 : さんこう 投稿日時 : 2023/07/19(Wed) 11:25:17
>こちら余分なのは理解できましたが、コードの書き換えがうまくいきません。
「うまくいきません」とは、どういうことですか?
「余分」なのですから、消せばいいと思いますが、
キーボードが故障しているとかでしょうか?
>こちら余分なのは理解できましたが、コードの書き換えがうまくいきません。
「うまくいきません」とは、どういうことですか?
「余分」なのですから、消せばいいと思いますが、
キーボードが故障しているとかでしょうか?
[返信 8] Re : 複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/19(Wed) 11:33:08
さんこう様
Dim A
A = Dir(ThisWorkbook.Path)
j = 1
Do While A <> ""
Workbooks.Open ThisWorkbook.Path
マクロ初めてで大変申し訳ございませんが、上記のように何通りか私なりに¥TESTを削除してみましたが値を取り出すことができなかったので、詳細を伺いたく質問させていただきました。
■[返信 7] さんこうさん(2023-07-19 11:25:17)の記事
> >こちら余分なのは理解できましたが、コードの書き換えがうまくいきません。
>
> 「うまくいきません」とは、どういうことですか?
>
> 「余分」なのですから、消せばいいと思いますが、
> キーボードが故障しているとかでしょうか?
>
さんこう様
Dim A
A = Dir(ThisWorkbook.Path)
j = 1
Do While A <> ""
Workbooks.Open ThisWorkbook.Path
マクロ初めてで大変申し訳ございませんが、上記のように何通りか私なりに¥TESTを削除してみましたが値を取り出すことができなかったので、詳細を伺いたく質問させていただきました。
■[返信 7] さんこうさん(2023-07-19 11:25:17)の記事
> >こちら余分なのは理解できましたが、コードの書き換えがうまくいきません。
>
> 「うまくいきません」とは、どういうことですか?
>
> 「余分」なのですから、消せばいいと思いますが、
> キーボードが故障しているとかでしょうか?
>
[返信 9] Re : 複数ブックから一致したい値を取り出したい
投稿者 : さんこう 投稿日時 : 2023/07/19(Wed) 11:36:45
>¥TESTを削除してみましたが
余計に削除しているように見えますが。
>¥TESTを削除してみましたが
余計に削除しているように見えますが。
[返信 10] Re : 複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/19(Wed) 11:51:05
さんこう様
> 余計に削除しているように見えますが。
すみません、どのようなコードが正しいかご教授願います。
■[返信 9] さんこうさん(2023-07-19 11:36:45)の記事
> >¥TESTを削除してみましたが
>
> 余計に削除しているように見えますが。
さんこう様
> 余計に削除しているように見えますが。
すみません、どのようなコードが正しいかご教授願います。
■[返信 9] さんこうさん(2023-07-19 11:36:45)の記事
> >¥TESTを削除してみましたが
>
> 余計に削除しているように見えますが。
[返信 11] Re : 複数ブックから一致したい値を取り出したい
投稿者 : リンク 投稿日時 : 2023/07/19(Wed) 11:52:22
『同じフォルダ内のブックから値を取り出したい』(ぺぺ)
https://www.excel.studio-kazu.jp/kw/20230719090540.html
『同じフォルダ内のブックから値を取り出したい』(ぺぺ)
https://www.excel.studio-kazu.jp/kw/20230719090540.html
[返信 12] Re : 複数ブックから一致したい値を取り出したい
投稿者 : さんこう 投稿日時 : 2023/07/19(Wed) 12:26:39
>どのようなコードが正しいか
「¥TEST」を消せばいいです。
A = Dir(ThisWorkbook.Path & "¥TEST¥*")
↓
A = Dir(ThisWorkbook.Path & "¥*")
Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
↓
Workbooks.Open ThisWorkbook.Path & "¥" & A
ただし、他の問題が発生すると思います。
>どのようなコードが正しいか
「¥TEST」を消せばいいです。
A = Dir(ThisWorkbook.Path & "¥TEST¥*")
↓
A = Dir(ThisWorkbook.Path & "¥*")
Workbooks.Open ThisWorkbook.Path & "¥TEST¥" & A
↓
Workbooks.Open ThisWorkbook.Path & "¥" & A
ただし、他の問題が発生すると思います。
[返信 13] Re : 複数ブックから一致したい値を取り出したい
投稿者 : 通行人 投稿日時 : 2023/07/19(Wed) 20:21:22
■[返信 4] ぺぺさん(2023-07-19 09:04:41)の記事
> TESTフォルダの中にあるブック(xlsx)の中から●●●と一致する値を取り出せた(マクロ有効ブック(xlsm)がデスクトップにある状態)のですが、
> マクロ有効ブック(xlsm)をTESTフォルダに移動しマクロを実行したところ、・・・
> TESTフォルダには大元のデータがそのまま入っています。
マクロブック(xlsm)も、各データブック(xlsx)も、同じ TESTフォルダ(…\Desktop\test)内に混在してしまったということね。
ならば、実行中のマクロブックは処理対象(ブックを開いたり、閉じたり)としない処理追加が必要。
マルチポスト先でも指摘(下記)されているように、処理要否を判定するコードを追加するか、
If A <> ThisWorkbook.Name Then '★同名ブックは処理対象外にすべき
もしくは、各データブックの拡張子が「.xlsx」に決まっているのなら、下のように「*.xlsx」しか相手にしないとか・・・
A = Dir(ThisWorkbook.Path & "\*.xlsx")
j = 1
Do While A <> ""
Workbooks.Open ThisWorkbook.Path & "\" & A
■[返信 4] ぺぺさん(2023-07-19 09:04:41)の記事
> TESTフォルダの中にあるブック(xlsx)の中から●●●と一致する値を取り出せた(マクロ有効ブック(xlsm)がデスクトップにある状態)のですが、
> マクロ有効ブック(xlsm)をTESTフォルダに移動しマクロを実行したところ、・・・
> TESTフォルダには大元のデータがそのまま入っています。
マクロブック(xlsm)も、各データブック(xlsx)も、同じ TESTフォルダ(…\Desktop\test)内に混在してしまったということね。
ならば、実行中のマクロブックは処理対象(ブックを開いたり、閉じたり)としない処理追加が必要。
マルチポスト先でも指摘(下記)されているように、処理要否を判定するコードを追加するか、
If A <> ThisWorkbook.Name Then '★同名ブックは処理対象外にすべき
もしくは、各データブックの拡張子が「.xlsx」に決まっているのなら、下のように「*.xlsx」しか相手にしないとか・・・
A = Dir(ThisWorkbook.Path & "\*.xlsx")
j = 1
Do While A <> ""
Workbooks.Open ThisWorkbook.Path & "\" & A
[返信 14] Re : 複数ブックから一致したい値を取り出したい
投稿者 : ぺぺ 投稿日時 : 2023/07/26(Wed) 08:46:37
ありがとうございました。
ありがとうございました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-20 06:32:29 )