

図1のような形式のシートが複数シートあります。
行いたいことは、図2のような表を作ることです。
全シートから、図1でいうB列の値だけをコピーし、
新しいブックの1つのシートに"値の貼り付け"をしていきたいです。
二回目以降の貼り付け時には、
コピーしたセルの1つ下のセルから張り付けたいです。
その際、図1の上部にあるシートタイトルやヘッダの部分も、
図2のように分けて表示させたいです。
その他にも、シート名や日付も表示させたいと考えています。
なお、対象ブックのあるパスをセルに入力して
「抽出」等のコマンドボタンをクリックしたら
そのパスを読み込んで抽出処理を行うようにしたいです。
VBAを勉強し始めたばかりでなかなか完成できず困り果てています。
コマンドボタンの配置方法や、クリック時に動作する方法は分かります。
が、セルに入力されたパスを読み込むことに手こずっています。
今まで調べてきたなかで、getPathやgetDirなどを使うんだろうなというイメージですが
動くものを作ることができません。
複数シートが対象なので、for文でシートの終わりまでループを回すことは
想像がつくのですが、実際にコードが書けません。
「こういう考え方で出来る」などでもかまいませんので
何かアドバイスをいただけませんでしょうか。
以上、よろしくお願い致します。

No.1ベストアンサー
- 回答日時:
もう少し詳しく書いたほうがよさそうです。
・図が不鮮明、小さくて読めない
・読み込みたいデータのファイルは一つなのか(一つのファイルに複数シート)、
複数ファイル(パスを指定した先のフォルダにある全ファイル)なのか、
で、さらに複数シートなのか
・図2にある日付、元のデータとの関係性が不明。
というわけでざっくりの回答となります。
手作業でやることを考えて書いていってはどうでしょうか。
あくまで一例です。いろいろ組み合わせてみてください。
1) ファイルを開く
Workbooks.Open FileName:=パス名からのファイル名
2)あるフォルダにある全ファイルを開く
Dir関数と言うのがあります。
http://officetanaka.net/excel/vba/tips/tips95.htm
たとえば
'---------------------------------------
Sub BBB()
Dim myPath As String, FlNam As String
myPath = "C:\Users\tomoya\Desktop\"
FlNam = Dir(myPath & "*.xlsx")
Do Until FlNam = ""
Workbooks.Open Filename:=myPath & FlNam
FlNam = Dir()
Loop
End Sub
'---------------------------------------
3) あるファイルの全シートをループする
'---------------------------------------
Sub ccc()
Dim k As Integer
For k = 1 To Worksheets.Count
Worksheets(k).Select
Next k
End Sub
'---------------------------------------
4) 最終行を取得する
Dim LstRow As Long
LstRow=Cells(Rows.Count,1).End(xlUp).Row
貼付先は、最終行の次でしょうから、実際には上記に +1 をするとよいでしょう。
5)B8セルから一番下までの範囲を指定する
Dim Rng As Range
Set Rng =Range(Cells(8,2),Cells(8,2).End(xlDown))
ご回答ありがとうございます。
そして勉強になるコードをたくさん、ありがとうございます。
はい。まずは手作業で、作りたいVBAの細分化をして、どんな機能を持ったプロシジャーが必要なのか等、噛み砕いてみます。
添付図について、ご指摘有難いです。今後画像を一緒に投稿する際は事前にサイズ感等の確認を行います。
読み込みたいデータは(本来は数百ブックあるのですが、まずは”1ブック内の複数シートから抽出する処理”を理解したいので、今回は)パスを指定した先のフォルダにある、1ブックの中の複数シートです。
プログラム内にはパスを書かずに、セルに入力されたパスを読み込むことが目標です。現段階では、以下ように書いています。
psPath = ThisWorkbook.Sheets(”管理”).Cells(1, 2).Value
If Dir(psPath, vbDirectory) = ”” Then
MsgBox ”存在しないパスが指定されています。修正してください”
Exit Function
End If
最後に日付なのですが、画像だと文字が潰れてしまって確認できないのですが、図1のシートタイトルのすぐ左下(B3)に「2002年7月」とありまして、さらにその左下(A8~A38)に「1から31」までの日付が下方向にふってあります。
これらから年月日を読み取って、図2のD3のように「2002/7/1」と出力しようとしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) 複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを 7 2023/02/10 23:20
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCEL VBAで複数シートから該当列のみを別シート列方向に順番に貼り付け
Visual Basic(VBA)
-
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
-
4
EXCEL:複数シートから特定行を一覧化したい
その他(Microsoft Office)
-
5
VBAの構文 3列置きにコピーして別シートに貼付
Visual Basic(VBA)
-
6
マクロの「1列おきに貼り付け処理を行う方法」を知りたいです。
Excel(エクセル)
-
7
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
8
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
9
ExcelのVBAで同一フォルダ内にあるファイルに同じ処理をしたい
Excel(エクセル)
-
10
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
13
エクセルでデータがある部分だけ罫線で囲いたいです。
Excel(エクセル)
-
14
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
15
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
16
全てのシートから特定文字を含むセルを抽出
Excel(エクセル)
-
17
excel2010 マクロで複数シート検索し、一致した行をコピーしたい
Excel(エクセル)
-
18
excel 複数のシートの同じ場所からコピーして1つのシートにまとめる方法
Excel(エクセル)
-
19
エクセルで複数列を1列にまとめるマクロ
Excel(エクセル)
-
20
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
ユーザーフォームに入力したデ...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー'1004': WorkSheet...
-
Excel VBA マクロ 先頭行の固定...
-
【VBA】全ての複数シートから指...
-
ExcelのVBAを使い、複数シート...
-
VBAで指定シート以外の選択
-
エクセルで通し番号を入れてチ...
-
VBAマクロでシートコピーした新...
-
【部分一致した行を含む8行をシ...
-
excelのマクロで該当処理できな...
-
実行時エラー1004「Select メソ...
-
【ExcelVBA】全シートのセルの...
-
シート削除のマクロで「delete...
-
複数シートに色付きセル(条件つ...
-
Excel VBA リンク先をシート...
-
VBA 入力月で該当シートを選択...
-
エクセルのマクロでアクティブ...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報