こんにちは。
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.1
- 回答日時:
> '↓(2)転記元を取得する
> Set motodata = myBook.Range("A2")
シートを指定しなければダメなのでは。
> '↓転記先の最新レコード位置を取得する
> Set sakidata = Range("A65536").End(xlUp).Offset(1)
ここも”どのブックのどのシート”なのか明確にした方がよいかも。
この回答への補足
お返事が遅くなりすみませんでした。
>ここも”どのブックのどのシート”なのか明確にした方がよいかも。
なるほど。
しかし、各ブックのシート名が各ファイル名になっているのですが、
その場合、どのように明確化すればよろしいのでしょうか。
考えてみましたが、素人も私では思いつきませんでした。
重ねてのご質問で恐縮ですが、アドバイスをいただけませんでしょうか。
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さんも含め、ご両人のご丁寧なアドバイスによって
問題が解決し、本当にありがとうございました!!
これでかなり悩んでしたので、仕事が効率化し本当に助かりました。
重ねてお礼申し上げます。
お探しの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
エクセルマクロ 【空白セルを無視する方法を教えてください】
Excel(エクセル)
-
6
マクロ最終行挿入
Excel(エクセル)
-
7
エクセルVBAでフィルタ抽出部分のみのコピー
Excel(エクセル)
-
8
複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ
Excel(エクセル)
-
9
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
10
空白セルをとばして転記
Visual Basic(VBA)
-
11
エクセル 重複したデータを別シートに抽出させる
Excel(エクセル)
-
12
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
13
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
14
Excelの転記マクロについて、教えて下さい excelのマクロでまた悩んでいます! AAAAという
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
【前回の続き続きです、ご教示...
-
エクセルのマクロについて教え...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAです。フォルダ内の...
-
【前回の続きです、ご教示くだ...
-
VBS Bookを閉じるコード
-
エクセルのマクロについて教え...
-
ADOで複数のBookから抽出
-
【Excel VBA】書き込み先ブック...
-
【マクロ】違うフォルダにある...
-
Excel VBA 保存時にフォルダを...
-
ユーザーフォームの切り替えに...
-
別ブックをダイアログボックス...
-
フォルダ内の全てのファイルに...
-
Excelマクロ 該当する値の行番...
-
【ExcelVBA】インデックスが有...
-
マクロVBA別Excelブックにデー...
-
エクセルマクロで、他ブックか...
マンスリーランキングこのカテゴリの人気マンスリー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 シート名が一致した場合の...
おすすめ情報