こんにちは。
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
数式による空白を無視して最終行までコピーするマクロ
Excel(エクセル)
-
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
-
4
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
5
エクセルVBAでフィルタ抽出部分のみのコピー
Excel(エクセル)
-
6
エクセルマクロ 【空白セルを無視する方法を教えてください】
Excel(エクセル)
-
7
複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ
Excel(エクセル)
-
8
マクロ最終行挿入
Excel(エクセル)
-
9
空白セルをとばして転記
Visual Basic(VBA)
-
10
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
11
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
12
VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 複数のエクセルから一つの...
-
VBS Bookを閉じるコード
-
VBA シートをコピーする際に Co...
-
VBA 別ブックからコピペしたい...
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
(マクロ)データをAブックからB...
-
複数のエクセルブックをひとつ...
-
マクロで最終行を取得したい
-
VBSでExcelのオープン確認
-
VBAで複数のブックを開かずに処...
-
VBAで別のブックにシートをコピ...
-
【VBA】全シートの計算式を全て...
-
VBA コードを実行すると画面が...
-
エクセルVBAが途中で止まります
-
現在開いているbook全てを対象...
-
エクセルVBAでテキストボックス...
-
VBAが止まります。
-
vbaでvbaProjectのパスワード解...
-
エクセルマクロで、他ブックか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBS Bookを閉じるコード
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】zip圧縮されたCSV...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
ExcelのVBAです。フォルダ内の...
-
vbaで他のブックに転記したい。...
-
フォルダ内の全てのファイルに...
-
VBAで複数のブックを開かずに処...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
VBA シート名が一致した場合の...
おすすめ情報