マクロ初心者です。
1つのフォルダの中に複数のbook(sheetも複数)があります。
これを新しい1つのbookにまとめたいです。
回答に下記マクロがありました。
Sub consolid()
Application.ScreenUpdating = False '画面更新を一時停止
Set mb = ThisWorkbook 'このコピー先ブックをmbとする。
myfdr = ThisWorkbook.Path
fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索
Do Until fname = Empty '全て検索
If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ
Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。
wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く
wb.Close '開いたブックを閉じる
n = n + 1 'ブック数をカウント
End If
fname = Dir 'フォルダ内の次のExcelブックを検索
Loop '繰り返す
Application.ScreenUpdating = True '画面更新一時停止を解除
MsgBox n & "件のブックをコピーしましました。"
End Sub
これで使用した所マクロを実行する度に何度も同じシートが
コピーされてしまいます。
できれば同じ名前のシートは上書きにしてマクロを何度も使用できるように【各BOOKは毎週更新されて私のフォルダに入ってきます】したいのですが
そのような事は可能なのでしょうか?
どなたか分かる方教えてください。お願い致します。
No.6ベストアンサー
- 回答日時:
#3です。
Sub consolid_try()
Dim mb As Workbook
Dim wb As Workbook
Dim ws As Worksheet
Dim cws As Worksheet
Dim myfdr As String
Dim fname As String
Dim n As Integer
Application.ScreenUpdating = False '画面更新を一時停止
Set mb = ThisWorkbook 'このコピー先ブックをmbとする。
myfdr = ThisWorkbook.Path
fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索
Do Until fname = Empty '全て検索
If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ
Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。
On Error Resume Next
For Each ws In wb.Worksheets
Set cws = mb.Worksheets(ws.Name)
If Not cws Is Nothing Then
Application.DisplayAlerts = False
mb.Worksheets(ws.Name).Delete
Application.DisplayAlerts = True
End If
ws.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く
Next
On Error GoTo 0
wb.Close '開いたブックを閉じる
n = n + 1 'ブック数をカウント
End If
fname = Dir 'フォルダ内の次のExcelブックを検索
Loop '繰り返す
Application.ScreenUpdating = True '画面更新一時停止を解除
MsgBox n & "件のブックをコピーしましました。"
End Sub
こうゆう事でいいのでしょうか。
No.4
- 回答日時:
う~ん。
エクセルのシートの上書きと言うのができないんだ。だから、マクロの中で、
----------------------------
1.同じ名前のシートがあるかどうか探す。
2.同じ名前のシートがあったら、そのシートのみ削除する
----------------------------
この2つを入れてあげれば、気兼ねなくシートのコピーをすれば、
上書きした事と同じ事になるよね?
>1.同じ名前のシートがあるかどうか探す。
2.同じ名前のシートがあったら、そのシートのみ削除する
----------------------------
この2つを入れてあげれば、気兼ねなくシートのコピーをすれば、
上書きした事と同じ事になるよね?
そうですね。素晴しいです。
その公式が入れれれば上書きした事になります。
しかしすいません・・・・。
その公式を初心者の為全く分かりません。
教えていただけませんか?
No.3
- 回答日時:
各ブックのシート名に重複がなければいいですけど、仮にシート名に同じ物があると
意図しないシートが上書きされる恐れも考えられそうですけど。
その辺りは大丈夫なのでしょうか?
⇒例えば10個のブックにシートがそれぞれ3枚あった場合、30枚のシート名に重複はないのか?
と言う事です。
この回答への補足
ご回答ありがとうございます。
>例えば10個のブックにシートがそれぞれ3枚あった場合、30枚のシート名に重複はないのか?
と言う事です。
はい。ありません。A11月 B11月 C11月・・・となっております。ので重複はありません。
No.2
- 回答日時:
フォルダ内のブックが入れ替わったりするのでなければ(データが変わるのはOK、ブックが増加するのもOK)、最初にThisWorkbookのシートを削除しておけば、常に新しいものになりますが・・・
古いものを残しておきたい場合があるのだと、No.1様の回答のようにそれぞれ比べなければならないけど、複数のブックの中でシート名がバッティングしていることはないのでしょうか?
この回答への補足
ご回答ありがとうございます。
しかしすいません。意味が分かりません。
>最初にThisWorkbookのシートを削除しておけば、常に新しいものになりますが・・・
各BOOKの既存のシートは消しておくということでしょうか?・・
既存のシートは現在進行形なので上書きする必要性があります。
自分の見る総合シート一旦全て削除してもう一度マクロ実行させるということでしょうか?
それなら・・・できそうです。でも1シートづつ手作業で消していくって事ですか?
すいません。全然分かっていないかも知れません。
>複数のブックの中でシート名がバッティングしていることはないのでしょうか?
シート名がバッティングしている事はありません。各グループ名プラス月<例A11月>というシートになっています。
No.1
- 回答日時:
発想を変えて、コピー先に同じシート名があるか無いかのチェックを入れ、
有れば一旦削除すれば良いのでは?
この回答への補足
すいません。重大な事を付け加えないといけません。
全く初心者です。そのため今、singlecatさんにお答えいただきましたが意味が分かりません・・・(ーー;)多分私の記入の仕方が不充分だと思われます。
各グループのデータと目標、反省、現在の進行状況がエクセルのファイルで1ヶ月1シートの形式で提出されてきます。
例えば今現在ですと12月の進行状況もかかれていますし1月の目標も別シートには書かれていますので
マクロを実行する際には既存のシートは上書きを新しいシートがあるものは新規でコピーする必要性があります。
例えばややこしいので各月あたり1ファイルにしたとしても、マクロを実行する度に新しくコピーされるのでは意味が無いのですが・・・
これはどうにかできないものなのでしょうか・・・・???
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
WorkBooksをオープンさせずにシ...
-
VBAでブックを非表示で開いて処...
-
エクセルで「ディスクがいっぱ...
-
フォルダ内の複数ファイルから...
-
Excelで複数ブックの同一セルに...
-
ブックの保護ができないんです...
-
エクセルで参照しているデータ...
-
Excelでブックの共有を掛けると...
-
エクセルで別ブックをバックグ...
-
Excel(2010)のフィルターが保...
-
エクセルにおける,「ブック」...
-
Excel VBAでブックを閉じる時、...
-
エクセルでウィンドウの枠固定...
-
Excel起動時に特定のワークシー...
-
エクセル 複数のブックを一度...
-
エクセルファイルをオープンし...
-
エクセルファイルを開かずにpdf...
-
エクセルシートの一部を送りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
ブックのピボットを別ブックに...
-
Excelで複数ブックの同一セルに...
-
Excel(2010)のフィルターが保...
-
エクセルで「ディスクがいっぱ...
-
Excelでブックの共有を掛けると...
-
エクセルファイルを開かずにpdf...
-
エクセルで別ブックをバックグ...
-
同じフォルダへのハイパーリン...
-
エクセルシートの一部を送りたい
-
エクセルにおける,「ブック」...
-
複数ファイルから特定シートの...
-
エクセル 複数のブックを一度...
-
エクセルで50行ごとに区切った...
-
エクセル2016です。「ブッ...
-
複数エクセルから特定シートの...
おすすめ情報