フォルダ内に同一フォームで行数が異なる複数のファイルがあります。(20個)データがあるのは、sheet1だけです。それぞれのファイルのシートのタイトル行以下を新規ブックの1シートにまとめるため、同じ事をしたい方の質問の答えにあった以下のマクロを実行しましたが、RR.Copy Dst の部分で、次のようなエラーになってしまいます。エラーになったあとは、エクセルが固まりタスクの終了にしなければいけない状態です。新規ブックに一つ目のファイルのシートのデータはペイストされていますが、そこでディバックになります。VBAは初心者なので、解決策をどなたか教えていただけないでしょうか?
実行時エラー '-2147417848 (80010108)':
copyメソッドが失敗しました。rangeクラス.
Sub test()
'このブックと同一フォルダ内のブックの、1シート目の3行目以下を、 '新規ブックの1シートにまとめる
Dim Book As Workbook
Dim Fpath As String
Dim Fname As String
Dim RR As Range
Dim Dst As Range Fpath = ThisWorkbook.Path & "\" Fname = Dir(Fpath & "*.xls")
Application.ScreenUpdating = False
Do Until
Fname = "" If LCase(Fname) = LCase(ThisWorkbook.Name) Then
Else
If Dst Is Nothing Then
Set Dst = Workbooks.Add.Worksheets(1).Range("A1")
End If
Set Book = Workbooks.Open(Fpath & Fname) Set RR = Book.Worksheets(1).UsedRange
Set RR = Intersect(RR, RR.Offset(2))
RR.Copy Dst
Set Dst = Dst.Offset(RR.Rows.Count) Book.
Close False
End If
Fname = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "完了!" End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
初心者? これを書いた人は、相当に頭の良い方だろうけれども、私のような、何年も同じようなレールに則った書き方しか出来ない人間(その上、劣化していっています)には、そのちょっとの所が、VBAの標準の軌道から外れているように思います。
むろん、試してみましたが、特にエラーは発生しませんでした。
私が気になる部分:
Set Dst = Workbooks.Add.Worksheets(1).Range("A1")
こういう書き方はあるものの、新規作成の場合は、ブック・シート・セルのオブジェクトは、分けたほうがよいし、そもそもRange型で保有する必要はないように思います。
Set RR = Book.Worksheets(1).UsedRange
Set RR = Intersect(RR, RR.Offset(2))
ここは、確実かどうかです。データの取得に、UsedRangeというのは、かなり無茶です。
それに、そこから、Intersect で、二行下からのデータを取得というところにも、多少の不安を感じます。
Set Dst = Dst.Offset(RR.Rows.Count)
そして、上記のRRの生成と連動してくると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Excel(エクセル) 【VBA】複数ブックから特定のシートを抽出して一つのブックに集約するマクロについて 3 2022/09/04 15:05
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
関連するカテゴリから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 シート名が一致した場合の...
おすすめ情報