同じファルダ内にある複数のブック(依頼リスト)を日付と時間で抽出して、別のブックのひとつのシートにまとめたいです。
ブックは依頼者ごと(6つ)になっており、まとめたい情報はA列~G列、11行目からスタートです。
毎日更新され、1日に入力される依頼はいくつか不明です。
但し、依頼リストは全部で1人50個までしか入力できません。
A列 B列 C列 E列~G列
№ 日付 時間 依頼内容等
ボタンをクリックすると、指定した期間(日付・時間)の6人の依頼をひとつのシートにまとめたいです。
例えば、11/14分(11/13の16:31~11/14の16:00まで)。
期間を指定するごとにシートが増えていくようにしたいです。
さらに指定で抽出されたら、元のデータ(6つのブック)のH列に「✔」をつけたいです。
マクロ初心者です。
色々調べて自分なりにやってみましたが、ひとつにまとまりません。
分かりにくい説明ですいません。
どなたか詳しい方がいらっしゃいましたら 教えてもらえないでしょうか。
よろしく お願いいたします。
No.5ベストアンサー
- 回答日時:
続けてお邪魔します。
>やはりグルグルするだけで
>完了BOXも出なくなってしまいました。
結局ファイル形式は「xlsx」で良いようなので、一番最初に帰ってみてはどうでしょうか?
お手元のVBE画面のコードをすべて消去し、
もう一度No.2のコードをそのままコピー&ペーストしてマクロを実行してみてください。
※ 最初の段階ではメッセージボックスだけは表示された!というコトなので
何らかの結果が出るかもしれません。
当然のコトですが、
>myPath = ThisWorkbook.Path & "\"
としているので、
コード記載のブックは他の6つのブックと同じフォルダ内に保存している!という前提です。
(コード記載のブックを保存していない場合は「パス」そのものが存在しません)
保存していない場合は
一旦コード記載のブックを同じフォルダに名前を付けて保存し、
再度開いてからマクロを実行してみてください。m(_ _)m
お返事ありがとうございます。
>もう一度No.2のコードをそのままコピー&ペーストしてマクロを実行してみてください。
やってみましたがダメでした。。。。スイマセン
>コード記載のブックは他の6つのブックと同じフォルダ内に保存している!という前提です。
同じフォルダに抽出条件にあった日付と時刻を入力して保存しましたがダメでした。。。
>一旦コード記載のブックを同じフォルダに名前を付けて保存し、再度開いてからマクロを実行してみてください。m(_ _)m
貼り付け先のブックを保存して再度開いてからマクロを実行しましたがダメでした。。。
ホントにスイマセン。
せっかく作ってもらったのに。。。知識があれば こちらの状態に修正して すぐ活用できるのかもしれないのですが。
No.4
- 回答日時:
何度もごめんなさい。
No.2のお礼欄をよく読んでいませんでした。
>バージョンが古いので「xlsx」→「xlsm」に変更してやってみたのですが。。
バージョンが古かったらExcel2003までの拡張子は「xls」ではありませんか?
「xlsm」はExcel2007以降のマクロ有効ブックのファイル形式になります。m(_ _)m
こちらこそ丁寧にありがとうございます。
>バージョンが古かったらExcel2003までの拡張子は「xls」ではありませんか?
プロパティで「xlsx」と表示されていたので。。。
さきほど「xlsx」→「xls*」と変更してみたのですが、やはりグルグルするだけで
完了BOXも出なくなってしまいました。
引続き頑張ってみます。
ありがとうございました。
No.3
- 回答日時:
No.2です。
>BOXで完了の知らせはあるのですが何も読み込んできません。
というコトは各ブックのSheet1のH列にもチェックは入っていないのですね。
エラーは出ていないというコトなので、コード自体は問題ないと思います。
ただ気になる点がいくつかあります。
① 各ブックのSheet1のB列はシリアル値になっているか?
②
「今日」を基準にしていますので、
仮に前回のマクロを今日実行した場合
各ブックのSheet1のB列日付が
昨日の 16:30 より遅く、なおかつ本日の 16:30以前のデータがないと何も反応しません。
可能性としては②が怪しいような気がします。
※ 日付を指定したい場合は
コード内の
>DATE
が今日のシリアル値なので、その部分を変更してみてください。
(どこかのセルに対象日を入力し、そのセルを参照しても構いません)m(_ _)m
お返事ありがとうございます。
さっき試してみたら、ずっとぐるぐるして完了BOXも出なくなってました・・・。
>というコトは各ブックのSheet1のH列にもチェックは入っていないのですね。
チェックも入ってませんでした。
>① 各ブックのSheet1のB列はシリアル値になっているか?
B列とC列はD列に入力があった場合に入力日付と時刻を返すようにしてます。
シリアル値ですが周りの人に聞いても分からなくって、セルの書式設定で日付になっておます。
>② 「今日」を基準にしていますので、仮に前回のマクロを今日実行した場合各ブックのSheet1のB列日付が昨日の 16:30 より遅く、なおかつ本日の 16:30以前のデータがないと何も反応しません。
仮入力で前日から今日の16:30以前、以降のデータを入力して試してみましたがダメでした・・・。
スイマセン。
こちらの説明不足で申し訳ございません。
勉強しながら頑張って変更してみます。
No.2
- 回答日時:
こんばんは!
一例です。
① 6つのファイルの拡張子は「.xlsx」である。
② コード記載のブック(This Workbook)と6つのファイルは同じフォルダに保存している。
③ 6つのファイルの参照先シート名はすべて「Sheet1」である。
④ 貼り付け先はThis WorkbookのSheet1である。
以上の前提条件でコードを考えてみました。
This Workbookの標準モジュールにしてください。
Sub Sample1()
Dim myPath As String, fN As String
Dim wB As Workbook, wS As Worksheet
Dim i As Long
myPath = ThisWorkbook.Path & "\"
fN = Dir(myPath & "*.xlsx")
Application.ScreenUpdating = False
Do Until fN = ""
If fN <> ThisWorkbook.Name Then
Workbooks.Open myPath & fN
Set wB = ActiveWorkbook
Set wS = wB.Worksheets("Sheet1")
For i = 11 To wS.Cells(Rows.Count, "A").End(xlUp).Row
If wS.Cells(i, "B") + wS.Cells(i, "C") > Date - 1 + TimeSerial(16, 30, 0) And _
wS.Cells(i, "B") + wS.Cells(i, "C") <= Date + TimeSerial(16, 30, 0) Then
wS.Cells(i, "A").Resize(, 7).Copy _
ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Offset(1)
wS.Cells(i, "H") = ChrW(10003)
End If
Next i
wB.Save
wB.Close
fN = Dir()
End If
Loop
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
※ ブックを開くところからやっていますので、
少し時間を要するかもしれません。m(_ _)m
回答どうもありがとうございます。
バージョンが古いので「xlsx」→「xlsm」に変更してやってみたのですが。。。
BOXで完了の知らせはあるのですが何も読み込んできません。
初心者なので どこを変更したら良いのかわから状態です。
少しづつ勉強しながら変更してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) エクセルの複数ブックのシートを1つまとめたい 都道府県ごとに47ブックがあり、そのシートのデータを1 5 2022/11/15 14:57
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
VBA シート名が一致した場合の...
-
【VBA】全シートの計算式を全て...
-
VBA コードを実行すると画面が...
-
Excel-VBAでのファイルの開き方
-
VBAで別ブックのシートを指定し...
-
【マクロ】違うフォルダにある...
-
VBA 実行時エラー 2147024893
-
VBS Bookを閉じるコード
-
エクセルVBAでテキストボックス...
-
vbaでvbaProjectのパスワード解...
-
フォルダ内の全てのファイルに...
-
エクセルのマクロについて教え...
-
ユーザーフォームの切り替えに...
-
VBAで別のブックにシートをコピ...
-
WSHによるExcelのセルコピー&...
-
エクセル共有化のトラブル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
Excelのマクロについて教えてく...
-
vbaでvbaProjectのパスワード解...
-
VBA コードを実行すると画面が...
-
【マクロ】アクティブセルにブ...
-
Excelのマクロについて教えてく...
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
Excelのマクロについて教えてく...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
vbaで他のブックに転記したい。...
-
【マクロ】違うフォルダにある...
おすすめ情報
分かりにくくてスイマセン。
ブックの様式は下記のとおりです。
このブック6つをB列とC列で抽出して(例:11/14 16:31~11/15 16:30等)別のブックのひとつのシートに貼りつけたいです。
できれば抽出条件ごとにシートがまとめてシートが増えていくようにしたいです。
それで、抽出したものはH列に「✔」がつくようにしたいです。(下記は例の抽出の場合)
A列 B列 C列 D列~G列 H列
10行目 № 日付 時間 依頼内容等
11行目 山田1 11/14 16:03
12行目 山田2 11/14 16:50 ✔
13行目 山田3 11/15 9:30 ✔
14行目 山田4 11/15 13:25 ✔