![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
VBAの素人なのでネットや本などで自分なりに調べましたが、
どうにも解決できないので、ご教示いただけませんでしょうか。
複数のブックにある同一セル番地にある
データを別のブックにまとめたいのですが、
ブック数が500程度あり、マクロでうまくできないか悩んでいます。
(1)転記元ブックを開く。
(2)転記元データをコピーする。
(3)転記先ファイルのセルに貼り付ける。
(4)転記元ブックを閉じる。
の繰り返しだと思うのですが、(2)ができず困っています。
ちなみに、500のブックとまとめるブックも同じフォルダにあります。
具体的には、転記元ブックは以下のような形で、A列に様々な温度のデータが縦に並んでいます。
A列
1行 温度
2行 27 ←ここのみ抽出したい
3行 28
4行 30
それぞれのブックのA2番地の温度データのみを抽出し、転記先ブックのA2からA500までまとめたい。
組んだマクロは以下です。
------------------------------
Sub 特定フォルダ内ブックを並べ替えて転記()
Dim myDir As String, myName As String, myBook As Workbook
Dim motodata As Range, sakidata As Range
'集計用のブックがあるフォルダ名を指定
myDir = "D:\VBA練習"
myName = Dir(myDir & "\" & "*.xls")
Do While myName <> ""
'↓転記先の最新レコード位置を取得する
Set sakidata = Range("A65536").End(xlUp).Offset(1)
'↓(1)指定した名前のブックを開いて変数に格納する
Set myBook = Workbooks.Open(Filename:=myDir & "\" & myName)
'↓(2)転記元を取得する
Set motodata = myBook.Range("A2")
'↓(3)転記先に貼り付ける
motodata.Copy sakidata
'↓(4)開いたブックを閉じる
myBook.Close
myName = Dir()
Loop
End Sub
------------------------------
mybookというキーワードを使用して、A2セルデータをコピーする構文をご教示いただけませんでしょうか。
以上、長々となってしまいましたが、何卒アドバイスの程お願いいたします。
No.2ベストアンサー
- 回答日時:
複数のBookやSheetの処理をする場合
#1さんも言われてるように、Book、Sheetを省略すると
現在アクティブになっている、Book、Sheetを指定したことになってしまいます
一応、修正してみましたが
Sheet名が不明なため"ActiveSheet"としていますが
複数Sheetがある場合、希望どおりの結果を得られない可能性があるので
"workheet("処理対象シート名")"に変更した方がよいと思います
Sub 特定フォルダ内ブックを並べ替えて転記()
Dim myDir As String, myName As String, myBook As Workbook
Dim motodata As Range, sakidata As Range
Dim 転記先 As Worksheet, 転記元 As Worksheet
Set 転記先 = ThisWorkbook.ActiveSheet
'集計用のブックがあるフォルダ名を指定
myDir = "D:\VBA練習"
myName = Dir(myDir & "\" & "*.xls")
Do While myName <> ""
'↓転記先の最新レコード位置を取得する
Set sakidata = 転記先.Range("A65536").End(xlUp).Offset(1)
'↓(1)指定した名前のブックを開いて変数に格納する
Set myBook = Workbooks.Open(Filename:=myDir & "\" & myName)
'↓(2)転記元を取得する
Set 転記元 = myBook.ActiveSheet
Set motodata = 転記元.Range("A2")
'↓(3)転記先に貼り付ける
motodata.Copy sakidata
'↓(4)開いたブックを閉じる
myBook.Close
myName = Dir()
Loop
End Sub
参考まで
hige_082さん
出来ました!!
Dim 転記先 As Worksheet, 転記元 As Worksheet
および
Set 転記元 = myBook.ActiveSheet
Set motodata = 転記元.Range("A2")
とすることで、シートも明確になり無事解決しました。
n-junさんも含め、ご両人のご丁寧なアドバイスによって
問題が解決し、本当にありがとうございました!!
これでかなり悩んでしたので、仕事が効率化し本当に助かりました。
重ねてお礼申し上げます。
No.1
- 回答日時:
> '↓(2)転記元を取得する
> Set motodata = myBook.Range("A2")
シートを指定しなければダメなのでは。
> '↓転記先の最新レコード位置を取得する
> Set sakidata = Range("A65536").End(xlUp).Offset(1)
ここも”どのブックのどのシート”なのか明確にした方がよいかも。
この回答への補足
お返事が遅くなりすみませんでした。
>ここも”どのブックのどのシート”なのか明確にした方がよいかも。
なるほど。
しかし、各ブックのシート名が各ファイル名になっているのですが、
その場合、どのように明確化すればよろしいのでしょうか。
考えてみましたが、素人も私では思いつきませんでした。
重ねてのご質問で恐縮ですが、アドバイスをいただけませんでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい【ブック1からブック2へ】 9 2023/08/10 07:51
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
-
4
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
5
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
6
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
7
VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。
Visual Basic(VBA)
-
8
【マクロ】【VBA】別ブックへのデータ転記について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBA 別ブックからコピペしたい...
-
VBSでExcelのオープン確認
-
VBAで別ブックのシートを指定し...
-
VBA コードを実行すると画面が...
-
別ブックをダイアログボックス...
-
【VBA】全シートの計算式を全て...
-
ACCESSVBA からExcelの他ブック...
-
VBA 実行時エラー 2147024893
-
【ExcelVBA】zip圧縮されたCSV...
-
ExcelのVBAコードについて教え...
-
Excel2013 ウインドウサイズの固定
-
エクセルマクロで、他ブックか...
-
【ExcelVBA】インデックスが有...
-
【ご教示ください】VBAの記述方...
-
フォルダ内の全てのファイルに...
-
エクセルのマクロについて教え...
-
ExcelVBA:すでに開かれている...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
Excelのマクロについて教えてく...
-
vbaでvbaProjectのパスワード解...
-
VBA コードを実行すると画面が...
-
【マクロ】アクティブセルにブ...
-
Excelのマクロについて教えてく...
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
Excelのマクロについて教えてく...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
vbaで他のブックに転記したい。...
-
【マクロ】違うフォルダにある...
おすすめ情報