別のフォルダ(DドライブのフォルダAとフォルダB)にそれぞれ同じ名前のファイルが500ずつあります。フォルダAのファイルにはそれぞれの名前のシート1、フォルダBのファイルにはそれぞれの名前のシート2があります。
マクロでフォルダCにシート1とシート2のあるブックを作ることはできませんか?
フォルダA ブック1(シート1)、ブック2(シート1)‥
フォルダB ブック1(シート2)、ブック2(シート2)‥
↓
フォルダC ブック1(シート1.シート2)、ブック2(シート1、シート2)‥
としたいのです。申し訳ありません!助けて下さい!
No.5ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Const FolderA As String = "d:\goo\excel\goo360A"・・・フォルダA
Const FolderB As String = "d:\goo\excel\goo360B"・・・フォルダB
Const FolderC As String = "d:\goo\excel\goo360C"・・・フォルダC
については、あなたの環境に適切に合わせてください。
---------------------------------------------------
Option Explicit
Const FolderA As String = "d:\goo\excel\goo360A"
Const FolderB As String = "d:\goo\excel\goo360B"
Const FolderC As String = "d:\goo\excel\goo360C"
Const Bs1 As String = "説明"
Const Bs2 As String = "添付"
Const Sh1 As String = "シート1"
Const Sh2 As String = "シート2"
Public Sub シート統合()
Dim flist() As String
Dim fname As String
Dim bname As String
Dim count As Long
Dim i As Long
fname = Dir(FolderA & "\*.xlsx")
'フォルダAの全ファイルを取得
count = 0
Do While fname <> ""
ReDim Preserve flist(count)
flist(count) = fname
count = count + 1
fname = Dir()
Loop
If count = 0 Then
MsgBox (FolderA & "内に該当ブックがありません")
Exit Sub
End If
'取得したファイルを1件ずつ処理
count = 0
For i = 0 To UBound(flist)
bname = flist(i)
If Dir(FolderB & "\" & bname) <> "" Then
Call MakeBook(bname)
count = count + 1
End If
Next
MsgBox (count & "件のブックの作成完了")
End Sub
Private Sub MakeBook(ByVal targetName As String)
Dim bname As String
'FolderAのブックをオープン
Workbooks.Open Filename:=FolderA & "\" & targetName
'新規ブック追加
Workbooks.Add (xlWBATWorksheet)
'新規ブック名を取得
bname = Workbooks(Workbooks.count).Name
'説明をコピー
ThisWorkbook.Worksheets(Bs1).Copy after:=Workbooks(bname).Worksheets(Workbooks(bname).Worksheets.count)
'シート1をコピーしてクローズ
Workbooks(targetName).Worksheets(Sh1).Copy after:=Workbooks(bname).Worksheets(Workbooks(bname).Worksheets.count)
Workbooks(targetName).Close savechanges:=False
'FolderBのブックをオープン
Workbooks.Open Filename:=FolderB & "\" & targetName
'シート2をコピーしてクローズ
Workbooks(targetName).Worksheets(Sh2).Copy after:=Workbooks(bname).Worksheets(Workbooks(bname).Worksheets.count)
Workbooks(targetName).Close savechanges:=False
'添付をコピー
ThisWorkbook.Worksheets(Bs2).Copy after:=Workbooks(bname).Worksheets(Workbooks(bname).Worksheets.count)
'余分なSheet1を削除
Application.DisplayAlerts = False
Workbooks(bname).Sheets("Sheet1").Delete
Application.DisplayAlerts = True
'フォルダーCへそのファイル名で保存
Workbooks(bname).Close savechanges:=True, Filename:=FolderC & "\" & targetName
End Sub
ありがとうございます。
Optionscriptとか、private subなんてどうやって使うのか? お仕事でこのようなことをされているのでしょうか?どうやって勉強していけばいいのでしょうか?
読んでいると意味がわかるのですが、自分ではかけません。
本当にできるようになりたいです。
本当にありがとう子ぞいます!
No.4
- 回答日時:
>シートの並びかえを相談したのは、シート1、2を合体し、「説明」「添付」を合体したら、「説明」「シート1」「シート2」「添付」と並び替えなければならないのかなと思いききました。
それでしたら、フォルダCにブックを作成するときに、最初から
「説明」「シート1」「シート2」「添付」の順に作成すればよいです。
この「説明」と「添付」はブック共通なので、これを予めどこに格納しておくかということになりますが、これらは
マクロのあるブック内に格納しておくという前提で良いでしょうか。
要件を整理すると以下のようになります。
1.フォルダAにある全てのブック(拡張子.xlsx)には、”シート1”が存在する。
2.フォルダBにある全てのブック(拡張子.xlsx)には、”シート2”が存在する。
3.マクロ(これから作成予定のマクロ)をもつブックには、”説明”、”添付”のシートが存在する。
4.フォルダAおよびフォルダB内に共に存在するブックを元に新規ブックを作成し、同じブック名でフォルダCに格納する。
そのブックには、”説明”、”シート1”、”シート2”、”添付”の順にシートを格納する。
5.マクロ実行時、フォルダC内には、一切ブックが存在しないことが前提。
6.マクロ実行時、オープン済みのブックは、そのマクロをもつブックのみであることが前提。
上記の要件で問題なければ、マクロの提供は可能です。
No.3
- 回答日時:
No2です。
補足ありがとうございました。
1.フォルダAの全てのファイルには必ず”シート1”が存在する。
2.フォルダBの全てのファイルには必ず”シート2”が存在する。
3.フォルダAとフォルダBの両方に存在する同じファイル名のもののみが処理対象となる。
上記で、間違いないでしょうか。
追加の件ですが、
>そんなんでつくったフォルダC内のファイル全てのシートの並び順番をかえるマクロはありますか?
フォルダCのブック内のシート1、シート2をシート2、シート1にしたいということでしょうか?
それなら、最初から、シート2、シート1の順で作成してはいかがでしょうか?
>上司の命令で、同様のフォルダC、フォルダDをつくらなければならなそうで、またシートの並びも変更ありそうなのです。
よく、意味が分かりません。
もっと、具体的に説明していただけませんでしょうか?
No.2
- 回答日時:
補足要求です。
1)ブックの拡張子はxlsxで良いですか。
2)シート1の実際のシート名は”シート1”で良いですか。(全て全角文字、"1"も全角)
もし、異なるなら、正確なシート名を提示ください。(全角半角も含めて正確に提示してください)
3)シート2の実際のシート名は”シート2”で良いですか。(全て全角文字、"2"も全角)
もし、異なるなら、正確なシート名を提示ください。(全角半角も含めて正確に提示してください)
4)フォルダA内の全てのブック(拡張子がxlsx)を処理しますが宜しいですか。
5)フォルダBは、フォルダAから取得したファイル名に合致するものを全て処理します。
6)マクロ実行時、フォルダC内には、一切ブックが存在しないという前提で良いですか。
No.1
- 回答日時:
VBAを使用しても、同じ名前のファイルを同時に開くことはできませんので、下記の流れでやってみてはいかがですか?
①新規のブックを開く
②フォルダAのブック1を開いて、①のブックにシート1をコピーし、ブック1を閉じる
③フォルダBのブック1を開いて、①のブックにシート2をコピーし、ブック1を閉じる
④①のブックを名前を付けて保存。
考えかたを具体的に整理してくださりありかとうございます!
実際にマクロをくむとましたらどのようになるのでしょう。
本当に初心者でまったくわからなくて。
どうかどうかよろしくおねかいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
複数のExcelファイルにある同名シートを1つのシートに一括でまとめるには?
Excel(エクセル)
-
Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい
Excel(エクセル)
-
フォルダ内の全ブックのシート名を変更したいです。
Excel(エクセル)
-
-
4
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで指定範囲のデータ...
-
Excelの警告について
-
VBAマクロで作成した新規ブック...
-
別ブックから入力規則でリスト...
-
複数エクセルから特定シートの...
-
Excel VBAでブックを閉じる時、...
-
エクセルにおける,「ブック」...
-
フォルダ内の複数ファイルから...
-
指定ファィルの指定シートをシ...
-
別フォルダにある同じ名前のブ...
-
EXCEL VBA におけるブック終了...
-
エクセルで「ディスクがいっぱ...
-
フォルダ内の複数ブック・シー...
-
ファイルをまとめたい
-
VBAでのブック・シートの保護・...
-
外部ブック参照が#REF!になって...
-
複数のEXCELファイルより一部の...
-
VBAでブックを非表示で開いて処...
-
エクセル:標準モジュールを一...
-
EXCELの複数ファイルを1つにま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
Excelの警告について
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルにおける,「ブック」...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
【マクロ】【VBA】別ブックへの...
-
Excel(2010)のフィルターが保...
-
Excelでブックの共有を掛けると...
-
エクセルで50行ごとに区切った...
-
エクセルでウィンドウの枠固定...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
VBAでブック保護非保護を判定す...
-
【マクロ】for nest について ...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
おすすめ情報
1)拡張子はxlsxです。
2.3ファイル名は全角文字です
[フォルダAには全てのファイルのかあり、Bのフォルダは一部たりないものもあります、その場合には1に在るシートだけてCにいれたいです)
456はその通りです。簡単にできるのでしようか?
追加 そんなんでつくったフォルダC内のファイル全てのシートの並び順番をかえるマクロはありますか?
上司の命令で、同様のフォルダC、フォルダDをつくらなければならなそうで、またシートの並びも変更ありそうなのです。
見捨てずに聞いて頂けてとてもありがたいです。
最初はフォルダAとBを合体して、シート1と2のあるブックをつくるだけですんだのですが、その合体ブックの最初に「説明」シート、シート1.2の後ろに「添付」シートをつけるように言われてしまいました。この説明と添付はすべてのブックに共通の内容になっています。
シートの並びかえを相談したのは、シート1、2を合体し、「説明」「添付」を合体したら、「説明」「シート1」「シート2」「添付」と並び替えなければならないのかなと思いききました。
説明と添付はすべてのブックに共通なんです。うまいやり方はありますか?
心配です。意味わかっていただけたでしょうか?
作業の内容をわかりやすくまとめていただきありがとうございました。
その通りです!理解いただけて感動です。
今日も1日中ネットで調べながら格闘していましたが、どうにもうまくいかずぐったりでした。
頭の中ではいろいろ考えてみているのですが、ネットで例を調べながら進めていますが、エラーの言葉の意味からわからないので、時間ばかりすぎてしまいます。
助けていただけると本当にありがたいです。